如何读取文件中的所有行并将它们存储在字符串中

时间:2015-12-26 14:01:50

标签: c string file

我正在尝试读取一些应该从文件传递给我的程序的命令。这些命令在不同的行上,所以我猜这意味着它们被\n字符分隔开来。这是我的命令阅读部分:

FILE *fop;
char command[50];
fopen("mbr.op", "r");
while(!feof(fop))
{ 
    fscanf(fop,"%s[^\n]", command);
    printf("%s\n", command);
}
fclose(fop);

这会打印文件中的一些单词,但不是全部,而不是预期的顺序。如何更改此代码以获得所需的结果?

2 个答案:

答案 0 :(得分:2)

您错误地打开了文件(它会返回与打开的文件关联的 FILE指针),DataTable应该用作这个 -

fopen

while(!feof(fop)) should not be used

您可以按如下方式编写循环 -

fop=fopen("mbr.op", "r");

注意 - 同时检查文件是否已成功打开。

答案 1 :(得分:1)

<link rel="shortcut icon" href="/static/favicon.ico?v=bb3f1">

有关FILE *fop; char command[50]; fop = fopen("mbr.op", "r"); /* get the file pointer */ if (fop == NULL) exit(1); /* check if the file successfully opened */ while(fscanf(fop,"%49[^\n]%*c", command) == 1) /* see notes after this code */ { printf("%s\n", command); } fclose(fop);

的用法的说明
  • 他们说使用fscanf()并不好。
  • Yon不需要feof()
  • 指定要读取的最大长度以避免缓冲区溢出。
  • 添加s以使其跳过换行符。

如果有空白行,上面的代码将无效。 我认为使用%*c更好地阅读行。

fgets()