懂C语言的高手进

来源:百度知道 编辑:UC知道 时间:2024/06/02 00:13:30
#include<string.h>
main()
{char s[9]="string",*p;
int n;
strcat(s,strcpy(s,"h"));
p=s+3;
puts(p);
}
谁可以告诉我这道C语言答案为什么是ing当“h”改成“hl”时答案又为什么是lhg。知道这里面原因的请给我发邮件地址:huchao810@163.com 谢谢大家了!!!

extern char *strcpy(char *dest,char *src);
把src所指由NULL结束的字符串复制到dest所指的数组中。
extern char *strcat(char *dest,char *src);
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。

char s[9]="string",*p;
(s[0]=s,s[1]=t,s[2]=r,s[3]=i,s[4]=n,s[5]=g,s[6]=\0,...)

strcpy(s,"h");
(s[0]=h,s[1]=\0,s[2]=r,s[3]=i,s[4]=n,s[5]=g,s[6]=\0,...)

strcat(s,strcpy());
(s[0]=h,s[1]=h,s[2]=\0,s[3]=i,s[4]=n,s[5]=g,s[6]=\0,...)

p=s+3;
p="ing\0"

所以答案是"ing",改成“hl”时答案是"l"(s[0]=h,s[1]=l,s[2]=h,s[3]=l,s[4]=\0,s[5]=g,s[6]=\0,...),不是"lhg"(已经通过程序实际测试)
那个n没用到?是不是你源码有遗漏