ilsoviet1917 发表于 2017-12-20 20:09:47

帮忙看看,连接两个字符串,输入后结尾有乱码

#include <stdio.h>

int main (void)
{
        char stra, strb;
        char *pa, *pb;
        pa = stra;
        pb = strb;
        int i = 0, j = 0;
        int a;
       
        printf ("请输入第一个字符串:");
        fgets (stra, 100, stdin);
        printf ("请输入第二个字符串:");
        fgets (strb, 100, stdin);
       
        while (*(pa + i) != '\n')
        {
                i++;
        }
       
        while (*(pb + j) != '\n')
        {
                *(pa + i + j) = *(pb + j);
                j++;
        }
       
        printf ("合并结果:%s\n", stra);
       
        return 0;
}

可以连接两个字符串,但是输出以后,字符串的结尾有一大堆乱码。
另外,两个while里的东西是不是能简化一下?

BngThea 发表于 2017-12-20 20:26:01

需要将最后一个有效字符设置为'\0'
在27行加上一句
stra = '\0';

sp1ral 发表于 2017-12-20 20:33:57

楼上正解
合并字符串可以用strncat()函数

sp1ral 发表于 2017-12-20 20:56:04

也可以这样写
#include <stdio.h>
#include <string.h>

int main (void)
{
      char stra, strb;
      char *pa, *pb;
      pa = stra;
      pb = strb;
      int i = 0, j = 0;
      int a;

      printf ("请输入第一个字符串:");
      fgets (stra, 100, stdin);
      printf ("请输入第二个字符串:");
      fgets (strb, 100, stdin);

      //while (*(pa + i) != '\n')
       // {
      //      i++;

      //}
      i = strlen(pa) - 1;

      while (*(pb + j) != '\n')
      {
                *(pa + i + j) = *(pb + j);
               j++;
               *(pa + i + j) = '\0';

      }

          printf ("合并结果:%s\n", stra);

      return 0;
}

ilsoviet1917 发表于 2017-12-20 21:02:49

sp1ral 发表于 2017-12-20 20:33
楼上正解
合并字符串可以用strncat()函数

就是不让用函数啊

卡毛贝比 发表于 2017-12-20 21:07:00

*(pa + i + j) = '\0';
最后输出之前加上这句就行了.
页: [1]
查看完整版本: 帮忙看看,连接两个字符串,输入后结尾有乱码