带有空格问题的C scanf
可能重复:
如何使用scanf输入空格?
printf(“请输入书名\ n”); 的scanf( “%S”,BOOKNAME);
我在这样的数据里面: – C编程
但为什么输出这样的数据: – C.
失去编程(字符串)?
为什么
谢谢。
%s
转换说明符导致scanf
在第一个空白字符处停止。 如果您需要能够读取空格字符,则需要使用%[
转换说明符,例如
scanf("%[^\n]", bookname);
它将读取下一个换行符的所有内容并将其存储到bookname
,但为了安全起见,您应该在转换说明符中指定bookname的最大长度; 例如,如果bookname有30个字符的空间来计算空终止符,你应该写
scanf("%29[^\n]", bookname);
否则,您可以使用fgets()
:
fgets(bookname, sizeof bookname, stdin);
我个人更喜欢fgets()
解决方案。
使用fgets()
而不是scanf()
好吧bookname
surly是某种char 😉 Point是这种forms的scanf
停在第一个空格字符上。
您可以使用不同的格式字符串,但在这种情况下,可能应该更喜欢使用fgets
。
scanf
确实应该用于“格式化”输入。