如果在scanf语句中提供字符串“ 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();
}


谢谢! :)

最佳答案

这就是scanf的工作方式。 %s格式说明符告诉scanf读取直到任何空格(包括任意数量的空格,制表符或Enter键)并将其存储在相应的地址中。

从人,%s转换规范,


  匹配一系列非空格字符;下一个指针必须是指向字符数组的指针,该指针的长度必须足以容纳输入序列和终止的空字节('\ 0'),该字符会自动添加。输入字符串停在空白处或最大字段宽度处,以先到者为准

关于c - 空格将字符串分成不同的字符串吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17774092/

10-11 22:05
查看更多