如果我在scanf语句中提供字符串“Alice in wonder land”,那么下面代码的输出是什么(底部的代码)?我的书说输出应该是:
Alice
in
wonder
land
好吧,如果我将“Alice in wonder land”作为单个字符串提供,为什么这是输出?当我将“Alice in wonder land”作为单个字符串提供时,如何在“Alice”,“in”,“wonder”,“land”之间提供空格使它们成为单独的字符串?
#include<stdio.h>
void main()
{
char s1[10], s2[10], s3[10], s4[10];
scanf("%s%s%s%s", s1, s2, s3, s4);
printf("\n%s\n%s\n%s\n%s", s1, s2, s3, s4);
getch();
}
谢谢! :)
答案 0 :(得分:1)
这就是scanf
的工作原理。 %s
格式说明符告诉scanf
读取任何空格,包括任意数量的空格,标签或输入键并将其存储在相应的地址中。
来自man,%s
转换规范,
匹配一系列非空白字符;下一个指针必须是指向字符数组的指针,该指针足够长以容纳输入序列和终止空字节('\ 0'),这是自动添加的。输入字符串在空格或最大字段宽度处停止,以先发生者为准
答案 1 :(得分:0)
答案 2 :(得分:-1)
您的图书版权。
当您从用户那里获得带有scanf的字符串时,当第一个spase,tab或enter位于输入中时,它将停止读取。其余的输入都留在缓冲区中。
这就是为什么你不应该使用scanf来读取字符串。您可以使用gets()函数 在第一次输入时停止,这意味着您可以在输入中包含空格或制表符。
我认为你还没有学习过FILES,所以它现在已经足够了。