我想在 C 中取一行字符串。怎么做?如果我在 printf 中使用格式说明符 %s,它只会占用字符到第一个空格。如何摆脱它?除了使用getline还有其他方法吗?提前致谢。
问问题
226 次
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 回答