首页 > 解决方案 > 字符串连接在 C 中不起作用 (TDM-GCC-64)

问题描述

这是我的代码

#include <stdio.h>
#include <conio.h>
#include <string.h>
int main()
{
  char fn[20], ln[20], fulln[20];
  int i, j, k;
  printf("Enter your first name: ");
  scanf("%s",fn);
  printf("Enter your last name: ");
  scanf("%s",ln);
  for(i=0,k=0;fn[i]!='\0'; i++, k++)
  {
    fulln[k] = fn[i];
  }
  k++;
  for(j=0;ln[j]!='\0';j++,k++)
  {
    fulln[k] = ln[j];
  }
  fulln[k] = '\0';
  printf("Your full name is %s",fulln);
  return 0;
}

无法理解它有什么问题。它不显示全名。我正在使用 TDM-GCC-64(最新版本)

标签: cgcc

解决方案


您的代码基本上是手动执行strcpy的。strcat

  for(i=0,k=0;fn[i]!='\0'; i++, k++)
  {
    fulln[k] = fn[i];
  }
  k++;
  for(j=0;ln[j]!='\0';j++,k++)
  {
    fulln[k] = ln[j];
  }
  fulln[k] = '\0';

您的代码存在问题:

  • 您应该初始化所有字符缓冲区,如下所示: char fn[20] = "", ln[20] = "", fulln[41] = "";

  • 此外,您应该确保fulln足够大以包含fnln。例如,如上所示将其设为 41,以容纳其间的空间。

  • 此外,k++;应该更改此行fulln[k++] = ' ';- 增加其间的空间。

顺便说一句,因为您已经包含string.h了,所以没有理由不使用标准库strcpystrcat. 这意味着这两行可以替换您的整个代码部分:

strcpy(fulln, fn);
strcat(fulln, " ");
strcat(fulln, ln);

推荐阅读