最后执行的strcat(s+1,“ops!”),这里的s+1没有意义吗?为什么最后输出的是ohh,ops!对于字符串连接来说,是不是不管+几都没有意义,就比如+1,不能从下标为一的开始连接是吧?

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

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;
}

img