编写一个程序,将两个字符串连接起来,不用strcat函数。

发布网友 发布时间:2022-04-23 10:52

我来回答

1个回答

热心网友 时间:2023-10-11 20:21

我觉得你应该先描述一下你为什么认为会有 j=j+1......

首先我猜,可能是逻辑没理清。

首先要明白,在第二个 wile 语句执行前,i 其实是处于字符串最末尾的'\0'位置,而 j 是等于 0。

而每个字符串末尾的'\0'就是用来标识一个字符串结束的,所以拼接字符串其实就是从串 1 的末尾'\0'位置开始讲串 2 的内容全部一个一个的粘贴过去(覆盖'\0'),然后在最后的末尾在添加一个 '\0'用以标识串的结束。

---

但是我又猜,万一是不明白自增、自减的含义呢?

s1[i++]=s2[j++];

i++、j++ 意思是在语句结束后,各自加一。

所以

s1[i++]=s2[j++];

等同于:

s1[i]=s2[j];
i += 1;
j += 1;

不过上面不是严格的等同,但是日常等同过去没问题,原理就涉及到汇编了。

---

最后我又想,也许楼主都会,只是因为代码十分的不友好,看走眼了呢?

所以我又放上增加了一点可读性(加了花括号)的原代码:

#include <stdio.h>
int main()
{
    char s1[80],s2[40];
    int i=0,j=0;
    printf("input string1:");
    scanf("%s",s1);
    printf("input string2:");
    scanf("%s",s2);
    while (s1[i]!='\0')
    {
        i++;
    }
    while(s2[j]!='\0')
    {
        s1[i++]=s2[j++];
    }
    s1[i]='\0';
    printf("\nThe new string is:%s\n",s1);
    return 0;
}

最后的最后,怎么提问实在是一门精妙的艺术。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com