哦,是哦,mingyue~我必须道歉,我把strcat()和strcpy()这两个函数弄混了,没有经过仔细的验证就发了这个帖子,实在不应该~在此-道歉
淘宝杜琨
运行下面的程序段,输出结果是 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是这样理解的吗?
理解不对。strcpy是字符串拷贝函数,也就是等于字符串附值函数。上面的(strcpy(s2,s3),s1)之所以显示hiabcd,是因为单看strcpy(s2,s3)的意思是把s3的"hi"附值给了s2。而附值后s2的原来的值就没有了被附值成了"hi",而strcat是字符串合并函数,也就是不会删除目标变量的字符串。也就是当s2被附值成"hi"后,因为strcat不会删除s2的值而会把s1的值与其合并最后合并后结果就是hiabcd。