我想在C中取一行字符串。怎么做? 如果我在printf中使用格式说明符%s,它只会将字符带到第一个空格。如何摆脱它?除了使用getline之外还有其他方法吗? 提前谢谢。
答案 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*/);