大家好我想问一下,在c编程中有一种方法可以从stdin中读取多行输入
因为我不能使用scanf(),因为它需要输入直到/ n
以及如何像某些分隔符一样停止输入
非常感谢
我也没有使用c ++
答案 0 :(得分:1)
使用fread
。
例如,从链接中复制
#include <stdio.h>
...
size_t bytes_read;
char buf[100];
FILE *fp;
...
bytes_read = fread(buf, sizeof(buf), 1, fp);
...
答案 1 :(得分:1)
我建议您使用getc
一次读取输入一个字符,查找所需的分隔符,并将非分隔符附加到您手动控制其大小的缓冲区(使用realloc
) 。另一种方法是使用fread
读取大块并扫描分隔符,但getc
方法可能更容易和更简单。
请务必查找EOF
以及明确的分隔符。
答案 2 :(得分:0)
如果在C中有适当的字符串数据类型,并且具有自动内存管理,则此任务非常简单。这个想法是:
string s = str_new();
const char *delimiter = "EOF\n";
while (true) {
int c = fgetc(f);
if (c == EOF) {
break;
}
str_appendc(s, c);
if (str_endswith(s, delimiter)) {
str_setlen(s, str_len(s) - strlen(delimiter));
break;
}
}
你只需要为字符串处理编写适当的函数。