C语言编辑问题!!!!!

来源:百度知道 编辑:UC知道 时间:2024/05/11 15:01:27
执行下面语句时输入123空格,456空格,789回车,输出结果是()
#include<stdio.h>
main()
{
char s[100];
int c,i;
scanf("%c",&c);
scanf(" %d",&i);
scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);
}
我运行过了,答案是1,23,456,但是却不明白为什么,请高手帮帮忙!!!!

%c,输入一个字符:1,赋给c
%d,输入一个数:23(敲了空格结束输入)赋给i
%s,输入一个字符串:456(空格结束输入)赋给s。
(后面输入的789已经没有变量存储了)

main()
{
char s[100];
int c,i;
scanf("%c",&c); ---------------读一个字符 1
scanf(" %d",&i);---------------读一串以空格结尾的数字 23
scanf("%s",s); ----------------读一个空格结尾的字符串 456
printf("%c,%d,%s\n",c,i,s);
}

%c是字符变量格式,占一个字节,所以scanf("%c",&c); 读第一个字符,即是1;而d是整型格式输出,以空格键结束了,即看到输出的23,S是字符串格式.....如此类推.

c是字符,智能接受一个字符,就是'1',23被当作整数到i里了,剩下的456 789以空格为间隔,所以456到s里了,789就这么没了