计算机青铜 2022-03-31 08:38 采纳率: 100%
浏览 103
已结题

不使用strcat函数连接两个字符串

问题遇到的现象和发生背景

编一程序,将两个字符串连接起来,不要用strcat函数。我的输出结果为空,请问我的代码哪里错了?感谢解答!

问题相关代码,请勿粘贴截图
#include <stdio.h>
int main()
{
  char a[120]={0},b[120]={0};
  int i,m,n;
    scanf("%s",a);
  scanf("%s",b);
  for(i=0;a[i]!='\0';i++)
  {
    m++;
  }
  for(i=0;b[i]!='\0';i++)
  {
    n++;
  }
  for(i=0;i<=119;i++)
  {
    a[m+1]=b[n+1];
    m++;
    n++;
  }
  printf("%s",a);
}


img

  • 写回答

3条回答 默认 最新

  • yun6853992 2022-03-31 09:57
    关注

    你要理解你的思路,以及注意你代码的细节,尤其是数组操作,字符串操作
    要注意知识点:
    1:数组存储字符串,默认以'\0'终结
    2:n长数组下标是从0~n-1啊
    3:你定义比较大的内存,保证了数组不越界了,还好
    4:注意连接时逻辑思路

    img

    
    int main()
    {
        char a[120] = { 0 }, b[120] = { 0 };
        int i, m = 0, n =0;
        scanf("%s", a);
        scanf("%s", b);
        //注意 你这里求得是a的长度  而下标是从0开始 所以下一个赋值应该是a[m]
        for (i = 0; a[i] != '\0'; i++)
        {
            m++;
        }
        //注意 你这是想求b的长度  长度为n  则对应的下标应该是 0~n-1
        for (i = 0; b[i] != '\0'; i++)
        {
            n++;
        }
        for (i = 0; i <=n; i++) //你这里应该遍历b的字符串  从0~n,依次给加到a数组后面 b[n]是'\0' 直接加上
        {
            a[m] = b[i]; //这里就把b的字符赋值给a的后面了
            m++; //然后a最后位置后移
        }
        printf("%s", a);
    }
    
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月31日