strcpy(s,"Ohh,")+5 就有区别了,因为下标5是strcpy(s,"Ohh,")函数返回的字符串结尾空字符后面一个字符位置,在这个位置连接的字符串,是打印不出来的。
因为打印完在下标位置+0到+4这个字符串就结束了,+4位置是字符串结尾字符空字符'\0’,
strcat(char *dest, const char *src)函数把字符串src复制到字符串dest结尾,并删除dest结尾的空字符,+5是删除“s everyone.”字符串结尾的空字符,
+0到+4是删除字符串“Ohh,”结尾的空字符,所以结果也不一样,测试代码如下:
#include<stdio.h>
#include <string.h>
int main(void)
{
char s[] = "Thanks everyone.";
char * t = strcpy(s,"Ohh,");
printf("t=%s\nt+1=%s\n",t,t+1);
printf("strcpy(s,\"Ohh,\")=%s\n",strcpy(s,"Ohh,"));
printf("strcpy(s,\"Ohh,\")+1=%s\n",strcpy(s,"Ohh,")+1);
strcat(strcpy(s,"Ohh,")+5,"Opps!");
printf("strcpy(s,\"Ohh,\")+5=%s\n",strcpy(s,"Ohh,")+5) ;
printf("%d %d %s\n",strlen(s),sizeof(s),s);
return 0;
}