我试图从某个文本文件中获得整行而不是一个单词,直到遇到空白为止,这是源代码:
#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
字段将是入门者。
的getchar()
读取终止换行符,假设存在一个,并且scanf()
没有不到达行末读99个字符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句