我正在尝试读取一些应该从文件传递给我的程序的命令。这些命令在不同的行上,所以我猜这意味着它们被\n
字符分隔开来。这是我的命令阅读部分:
FILE *fop;
char command[50];
fopen("mbr.op", "r");
while(!feof(fop))
{
fscanf(fop,"%s[^\n]", command);
printf("%s\n", command);
}
fclose(fop);
这会打印文件中的一些单词,但不是全部,而不是预期的顺序。如何更改此代码以获得所需的结果?
答案 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()
并不好。feof()
。s
以使其跳过换行符。如果有空白行,上面的代码将无效。
我认为使用%*c
更好地阅读行。
fgets()