c - 字符串连接在 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(最新版本)
解决方案
您的代码基本上是手动执行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
足够大以包含fn
和ln
。例如,如上所示将其设为 41,以容纳其间的空间。此外,
k++;
应该更改此行fulln[k++] = ' ';
- 增加其间的空间。
顺便说一句,因为您已经包含string.h
了,所以没有理由不使用标准库strcpy
和strcat
. 这意味着这两行可以替换您的整个代码部分:
strcpy(fulln, fn);
strcat(fulln, " ");
strcat(fulln, ln);
推荐阅读
- c# - 是否可以将路由值绑定到 ASP.NET Core Web API 中的自定义属性的属性?
- android - 无法在 Android 中使用 Firebase Google Auth 登录
- c++ - 如何使用 dynamic_cast
- javascript - 在函数中赋值后将全局变量赋值给对象
- user-interface - 如何创建类似于 Blender 或 Maya 的桌面 GUI 应用程序?
- asynchronous - Dart 中的 Stream 和 Future
- ruby-on-rails - Rails bootstrap_checkbox 不反映表的值 - 显示全部关闭
- kubernetes - Flyway - Springboot - Kubernetes
- selenium-webdriver - 无法使用 ID 或名称定位元素
- python - 日期列上的左合并在熊猫中表现得很奇怪