用C语言从文件中读取特定字符
我是C编程新手,我需要编写一些程序,从文件中获取字符。我有这样的文本文件:用C语言从文件中读取特定字符,c,file,scanf,C,File,Scanf,我是C编程新手,我需要编写一些程序,从文件中获取字符。我有这样的文本文件: Grade Joe Black A Mark Freeman B John White C . . . 我只需要从这个文件中读取等级(abc…),然后把它放到数组中。可以只获取这个特定字符而不是整个文件吗 是的。您可能会发现最简单的方法是读取(fgets)中的行,然后解析字符串(从末尾修剪空格,然后在最后一个空格后读取字符) 使用fopen()打开文件 为使用malloc()读取的每一行分配内存 在尚未到达文件末尾时,
Grade
Joe Black A
Mark Freeman B
John White C
.
.
.
我只需要从这个文件中读取等级(abc…),然后把它放到数组中。可以只获取这个特定字符而不是整个文件吗 是的。您可能会发现最简单的方法是读取(fgets)中的行,然后解析字符串(从末尾修剪空格,然后在最后一个空格后读取字符)
fopen()
打开文件malloc()
读取的每一行分配内存fgets()
,读取文件中的每一行(feof()
)'A'
-'F'
(strchr()
),您还会在Joe Black和Mark Freeman的姓氏中找到'B'
和'F'
您可能会发现,strtok()
可以帮助您在每个空格中将字符串分成更小的部分,并且假设文件中的数据正常,则每行上的最后一个标记(如果只有1个字符长)将是分数
(给新会员的提示:如果有人发布了你认为最好的答案,你可以“接受”他们的答案以表示感谢。你的声誉会感谢你。)#
#包括
内部主(空)
{
文件*fp;
char-arr[100];
int标志=1;
fp=fopen(“try.txt”、“r”);
while(fgets(arr,100,fp)!=NULL)
{
如果(标志==1)
{
flag=0;
继续;
}
printf(“%c\n”,arr[strlen(arr)-2]);
}
}
确保在文件中最后一行的最后一个字符后按enter键,因为我们正在执行
len-2
(其中包括\n
字符)。如果不查找换行,就无法从文件中读取成绩,因为无法知道成绩在文件中的位置。当然,在数组中只存储您关心的信息是可能的,但是您需要展示您所做的尝试;堆栈溢出不是“为我做家庭作业”服务(可能有人会为你做家庭作业,并在3…2…1…中证明我错了)。你可以阅读文件的每一行,并取最后一个字符。如果您在这方面需要帮助,请尝试编写代码并查看遇到的问题。通过fgets()
读取的字符串中的“最后一个空格”通常是'\n'
,之后的char
是“''\0`”。不清楚您的建议。谢谢您的建议-答案已更新。谢谢,伙计,我理解这行“printf(“%c\n”,arr[strlen(arr)-2]);”,但是关于这个标志呢?是跳过第一行吗?@Patryk:是的,旗子是用来跳过第一行的。
#include<stdio.h>
#include<string.h>
int main(void)
{
FILE *fp;
char arr[100];
int flag=1;
fp=fopen("try.txt","r");
while (fgets(arr,100, fp)!=NULL)
{
if(flag==1)
{
flag=0;
continue;
}
printf("%c\n",arr[strlen(arr)-2]);
}
}