【发布时间】:2020-10-15 02:54:30
【问题描述】:
我想在 c 中连接字符串。于是我写了如下代码:
#include <stdio.h>
#include <string.h>
int main () {
char str1[20], str2[20];
int i=0;
scanf("%20s",str1);
getchar();
scanf("%20s",str2);
getchar();
char str3[strlen(str1)+strlen(str2)];
for(i=0; str1[i]; i++){
str3[i]=str1[i];
}
for(i=0; str2[i]; i++){
str3[strlen(str1)+i]=str2[i];
}
printf("\nSum is: %s\n", str3);
return 0;
}
为什么我在和 str3 的末尾得到随机字符? 我知道有一个函数可以做到这一点,但我想用一种基本的方式来做。
【问题讨论】:
-
有什么理由不使用
strcat? -
您应该在此处为
'\0'提供额外的char:char str3[strlen(str1)+strlen(str2)];。 -
是的,我不想使用函数。
-
您没有在字符串末尾添加 NULL 字节。只需添加行
str3[strlen(str1) + strlen(str2)] = 0;,顺便说一句,这里有很多不好的实践代码...... -
旁白:
"%20s"应该是"%19s"
标签: c arrays string concatenation