来自C中stdin的多行输入读取输入

时间:2011-10-10 19:29:04

标签: c line stdin

大家好我想问一下,在c编程中有一种方法可以从stdin中读取多行输入

因为我不能使用scanf(),因为它需要输入直到/ n

以及如何像某些分隔符一样停止输入

非常感谢

我也没有使用c ++

3 个答案:

答案 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;
  }
}

你只需要为字符串处理编写适当的函数。

相关问题