使用scanf从stdin C读取文件

时间:2014-10-27 16:22:18

标签: c stdin

我可以使用stdinscanf("%s", &input)读取文件内容。

如果我不知道文件的长度,我应该为input字符串分配多少空间?

2 个答案:

答案 0 :(得分:1)

考虑使用fgets代替scanfscanf会导致溢出,但您可以告诉fgets您想要阅读的最大尺寸。如果您需要scanf进行格式扫描,您仍然可以在sscanf之后使用fgets

char * fgets ( char * str, int num, FILE * stream );

答案 1 :(得分:1)

你应该扭转这个问题。您分配了一个已定义大小的缓冲区,它们限制了输入,与scanf的{​​{1}}一样。

fgets

#define SIZE 256
char buf[SIZE];
fgets(buf, SIZE, stdin);

然后迭代阅读。

使用scanf("%255s", buf); 代替fgets取决于您的输入是面向行还是空格分隔。而且...... RTFM ......