带空间问题的C-scanf
可能重复:带空间问题的C-scanf,c,C,可能重复: printf(“请输入书名”); scanf(“%s”,书名) 我在数据中输入了如下内容:- C程序设计 但为什么要这样输出数据:- C 丢失编程(字符串) 为什么 谢谢。使用而不是scanf()好吧书名surly是一种字符;-) 关键是,在这个表单中,scanf在第一个空格字符上停止 您可以使用不同的格式字符串,但在这种情况下,您可能更喜欢使用fgets scanf确实应该用于“格式化”输入 转换说明符%s导致scanf在第一个空白字符处停止。如果需要能够读取空白字符,则需要使用
printf(“请输入书名”); scanf(“%s”,书名) 我在数据中输入了如下内容:- C程序设计 但为什么要这样输出数据:- C 丢失编程(字符串) 为什么
谢谢。使用而不是
scanf()
好吧书名
surly是一种字符;-)
关键是,在这个表单中,scanf
在第一个空格字符上停止
您可以使用不同的格式字符串,但在这种情况下,您可能更喜欢使用fgets
scanf
确实应该用于“格式化”输入 转换说明符%s
导致scanf
在第一个空白字符处停止。如果需要能够读取空白字符,则需要使用%[
转换说明符,例如
scanf("%[^\n]", bookname);
它将读取下一个换行符之前的所有内容,并将其存储到bookname
,不过为了安全起见,您应该在转换说明符中指定bookname的最大长度;例如,如果bookname可以容纳30个字符(计算空终止符),您应该写入
scanf("%29[^\n]", bookname);
否则,您可以使用fgets()
:
我个人更喜欢
fgets()
解决方案。这并不能回答问题,即“为什么”。非常感谢。好信息:)
fgets(bookname, sizeof bookname, stdin);