çscanf函数与空间问题
可能重复:
How do you allow spaces to be entered using scanf?çscanf函数与空间问题
的printf( “请在书名\ N键”); 012fscanf(“%s”,bookname);
我喜欢这里面的数据: - C程序设计
但为什么输出这样的数据: - ç
失去编程(串)?
为什么
谢谢。
使用fgets()
而不是scanf()
这并不回答这个问题,即“为什么”。 – caf 2010-12-06 00:40:25
谢谢!它工作 – user531119 2010-12-06 01:56:35
好bookname
切切实实为某种字符的;-) 的一点是,在第一个空格字符这种形式停止scanf
。
您可以使用不同的格式字符串,但在这种情况下,可能应该更喜欢使用fgets
。
scanf
真的应该用于“格式化”输入。
%s
转换说明符导致scanf
停止在第一个空格字符处。如果您需要能够读取空白字符,你要么需要使用%[
转换说明,如
scanf("%[^\n]", bookname);
将读到的一切到下一个换行符,并将其存储到bookname
,虽然是安全的你应该在转换说明符中指定书名的最大长度;例如如果BOOKNAME预留有30个字符计数空终止符,你应该写
scanf("%29[^\n]", bookname);
否则,你可以使用fgets()
:
fgets(bookname, sizeof bookname, stdin);
我喜欢fgets()
解决方案,个人。
什么是`bookname`? – khachik 2010-12-05 10:42:56