我试图从某个文本文件中获取一整行而不是一个单词,直到它遇到空格,这里是源代码:
#include <stdio.h>
void main() {
int lineNum=0;
char lineContent[100];
scanf("%s", &lineContent);
printf("%s\n", lineContent);
}
Run Code Online (Sandbox Code Playgroud)
这是我的文本文件,名为 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
Run Code Online (Sandbox Code Playgroud)
我用以下命令运行它:
a.out < test.txt
Run Code Online (Sandbox Code Playgroud)
我的输出只是:
111
Run Code Online (Sandbox Code Playgroud)
我想要的是:
111 John Smith 100 98 1.2 2.5 3.6
Run Code Online (Sandbox Code Playgroud)
当然,我可以简单地使用 while 语句并递归读取直到遇到 EOF,但这不是我想要的。我只想每次从文件中读取一整行。
我怎样才能做到这一点?
非常感谢。
fgets()是一次一行读取文件的最方便的标准库函数。GNUgetline()更方便,但它是非标准的。
但是,如果您想使用scanf(),则可以使用[字段描述符而不是s:
char lineContent[100];
scanf("%99[^\n]", &lineContent);
getchar();
Run Code Online (Sandbox Code Playgroud)
请注意,使用显式字段宽度可以防止lineContent在遇到长行时超出边界。另请注意,[描述符的不同之处s在于[不跳过前导空格。如果保留前导空格对您很重要,那么scanf使用s字段是不可能的。
读取getchar()终止换行符,假设有一个,并且scanf()在未到达行尾的情况下未读取 99 个字符。
| 归档时间: |
|
| 查看次数: |
12591 次 |
| 最近记录: |