1

我想在 C 中取一行字符串。怎么做?如果我在 printf 中使用格式说明符 %s,它只会占用字符到第一个空格。如何摆脱它?除了使用getline还有其他方法吗?提前致谢。

4

1 回答 1

2

scanf从输入流中获取行是一个糟糕的选择。虽然你可以很容易地做到这一点:

buf[SIZE];
scanf ("%[^\n]\n", buf);

您将面临遭受缓冲区溢出错误/攻击的风险。

更好的方法是使用 一次读取“SIZE”字符fgets,并将数据复制到动态分配的缓冲区中,您可以在填充时调整其大小:

buf[SIZE];
do {
  fgets (buf, SIZE, stdin);
  /* Handle copying to dynamic buffer and resize over here */
} while (/*check we haven't reached eol*/);
于 2013-01-08T13:22:18.430 回答