c语言,下面程序什么意思?

来源:百度知道 编辑:UC知道 时间:2024/05/29 14:30:13
#include<stdio.h>
void main()
{
char a[20],b[20],c[20],d[20];
scanf("%d%d%d%d",a,b,c,d);
printf("%s\n",b+2);
}
运行是输入:I like studying English
为什么结果为:ke ?

因为a[20],b[20],c[20],d[20];
分别存I like studying English
即数组b存的是like
而你输出是b+2
单独b时是代表数组的首地址。。那么你b+2就是再向右两位。即b[2]
b[0]存l
b[1]存i
b[2]存k
b[3]存e
所以输出从b[2]后的数。
如果你的输出b+2改为c+2输出就是udying
他们遇到'\0'即输出结束。
加油,多看。慢慢就会明白了。

b+2,表示从b[2]开始到结尾的字符串.
因为数组变量名其实是数组首元素的地址,b+2就是在首地址之后两个长度的地址.

scanf("%d%d%d%d",a,b,c,d);
输入本来就有问题
想输入一个字符串 只要定义一个字符串数组就可以了
scanf("%s",&a);
printf("%s\n",a);

你这段scanf("%d%d%d%d",a,b,c,d); %d怎么用来输入字符了呢?

呵呵~~
你这段scanf("%d%d%d%d",a,b,c,d); %d怎么用来输入字符了呢?

scanf("%d%d%d%d",a,b,c,d);这段输入是有问题的!

改一下就OK了!像你这样输入是不可能出现ke这样的结果的!!如果这样输入的话出现的应该是乱码,后面应该还有个?号!!!因为%d是输入的是整型数,机器不会把它当成字符串识别的!!!

scanf("%s%s%s%s",a,b,c,d);//%s当碰到空格或回车就停止输入了,所以这样输入就可以输入四个字符串了!!!

这是一个字符串指针%s是用来输出字符串的,b+2是指从b的第二个位置开始输出,相当于从b[2]开始输出,所以会输出ke的!!!

多看看指针就会了解了,特别是字符串这部分的!!!