我试图从一些文本文件中获取一整行而不是一个单词,直到它遇到空白,这里是源代码:
#include <stdio.h>
void main() {
int lineNum=0;
char lineContent[100];
scanf("%s", &lineContent);
printf("%s\n", lineContent);
}
这是我的文本文件,名为 test.txt,内容包含 2 行:
111 John Smith 100 98 1.2 2.5 3.6
222 Bob Smith 90 91 3.2 6.5 9.6
然后我使用以下命令运行它:
a.out < test.txt
我的输出是:
111
我想要的是:
111 John Smith 100 98 1.2 2.5 3.6
当然,我可以简单地使用while语句,递归读取直到遇到EOF,但这不是我想要的。每次从文件中读取时,我只想读取一整行。
我该怎么做?
非常感谢。
最佳答案
fgets()
是一次一行读取文件的最方便的标准库函数。 GNU getline()
更方便,但它是非标准的。
但是,如果您想使用 scanf()
,则可以使用 [
字段描述符而不是 s
来实现:
char lineContent[100];
scanf("%99[^\n]", &lineContent);
getchar();
请注意使用显式字段宽度来防止在遇到长行时超出 lineContent
的边界。还要注意 [
描述符与 s
的不同之处在于 [
不会跳过前导空格。如果保留前导空格对您很重要,那么带有 s
字段的 scanf
是行不通的。
getchar()
读取终止换行符,假设有一个,而 scanf()
没有读取 99 个字符而没有到达行尾。
关于c - 如何使用<从文本文件中读取一整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41861208/