【发布时间】:2017-10-30 15:37:15
【问题描述】:
我的文件包含三行,在使用 fgets 将文件读入数组后,我想在换行符处打破三行并在控制台上分别打印三行,如果可能的话将三行存储在三个不同的数组。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
FILE *infile;
char data[BUFSIZ],*pa,token_seperator[]={"\n"};
infile=fopen("example","r");
while((fgets(data,BUFSIZ,infile)!=NULL))
pa=strtok(data,token_seperator);
while(pa!=NULL)
{
printf("%s\n",pa);
pa=strtok(NULL,token_seperator);
}
}
【问题讨论】:
-
执行
fgets3次。 -
char *app; app=strchr(data,'\n'); if (app!=NULL) *app=0;在 Windows 上,您必须使用 '\r' 而不是 '\n' 进行截断。 (或者你可以同时测试 '\n' 和 '\r')。 -
我看到第一个 while 读取所有文件直到最后......然后你只解析文件的最后一行!
-
fgets 手册页显示“在 EOF 或换行符后停止读取”。正如 BLUEPIXY 所说,执行 fgets 三次并每次打印/存储它