我试图从某个文本文件中获取一整行而不是一个单词,直到它遇到空格,这里是源代码:
#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()
是一次一行读取文件的最方便的标准库函数。 GNUgetline()
甚至更方便,但它是非标准的。
如果你想使用scanf()
,但是,您可以使用[
字段描述符代替s
:
char lineContent[100];
scanf("%99[^\n]", &lineContent);
getchar();
请注意使用显式字段宽度来防止超出范围lineContent
如果遇到长队。另请注意,[
描述符不同于s
在那里面[
不跳过前导空格。如果保留前导空格对您很重要,那么scanf
与s
场是不可能的。
The getchar()
读取终止换行符,假设有一个,并且scanf()
没有读到 99 个字符而未到达行尾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)