我可以使用stdin
从scanf("%s", &input)
读取文件内容。
如果我不知道文件的长度,我应该为input
字符串分配多少空间?
答案 0 :(得分:1)
考虑使用fgets
代替scanf
。 scanf
会导致溢出,但您可以告诉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 ......