如何在C中取一行字符串

时间:2013-01-08 12:56:10

标签: c

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

buf[SIZE];
do {
  fgets (buf, SIZE, stdin);
  /* Handle copying to dynamic buffer and resize over here */
} while (/*check we haven't reached eol*/);