char a[7]="abcdef"; char b[4]="ABC"; strcpy(a,b); printf ("%c",a[5]);
运行结果为何是f?想不通
strcpy函数的使用方法是:strcpy(字符数组1,字符数组2) 将 字符数组2 的内容连接到 字符数组1 的后面,结果会放到 字符数组1 的地方去 所以 字符数组1 的长度一定要够长,否则会出错。
再回头看看你的程序,因为数组的下标是从0开始计算的,所以a[5]实际上在数组里面已经是第6个数据,也就是 f 。
a[0]='a' a[1]='b' a[2]='c' a[3]='d' a[4]='e' a[5]='f'
数组下标错0开始计算,这个按照我们喜欢从1开始记数的习惯一时间还不大适应,多多练习一下就会好了。
在这个题目中如果用了strcpy以后把值赋给a的话,a数组的下标似乎不够大哦
差不多,因为连接比较形象点 ["abcdef" 连接 "ABC"] 总比 [把"ABC" 拷贝到"abcdef"的后面] 要形象得多吧~~~不管怎么说b的内容都将保持不变
运行下面的程序段,输出结果是 char s1[10]="abcd",s2[10]="efg",s3[]="hi"; strcat (strcpy(s2,s3),s1); puts (s2); 答案是hiabcd strcpy(s2,s3)为hi\0 strcat (strcpy(s2,s3),s1)就为hiabcd是这样理解的吗?