C scanf有空格问题

use*_*119 1 c

可能重复:
如何使用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()个人更喜欢这个解决方案.