可能重复:
如何使用scanf输入空格?
printf("请输入书名\n"); 的scanf( "%S",BOOKNAME);
我在这样的数据里面: - C编程
但为什么输出这样的数据: - C.
失去编程(字符串)?
为什么
谢谢.
Joh*_*ode 18
该%s转换说明会导致scanf停在第一个空格字符.如果您需要能够读取空格字符,则需要使用%[转换说明符,例如
scanf("%[^\n]", bookname);
Run Code Online (Sandbox Code Playgroud)
它将读取下一个换行符并将其存储到所有内容bookname,但为了安全起见,您应该在转换说明符中指定bookname的最大长度; 例如,如果bookname有30个字符的空间来计算空终止符,那么你应该写
scanf("%29[^\n]", bookname);
Run Code Online (Sandbox Code Playgroud)
否则,您可以使用fgets():
fgets(bookname, sizeof bookname, stdin);
Run Code Online (Sandbox Code Playgroud)
我fgets()个人更喜欢这个解决方案.