C语言字符串数组拼接问题
学校布置了一个不使用strcat函数拼接数组的问题,我自己写了一个代码但是运行起来只能将第一个字符串数组和第二个字符串数组的第一个值拼接起来,有好兄弟能帮忙看下问题出在哪吗?
#include
#include
int main()
{
char a[99];
char b[99];
char c[99];
unsigned int i;
unsigned int j;
printf("请输入第一个字符串:");
gets_s(a);
printf("请输入第二个字符串:");
gets_s(b);
for (i = 0; i < strlen(c); i++)
{
if (a[i] != '\0')c[i] = a[i];
else break;
}
for (j = 0; i+j < strlen(c); j++)
{
if (b[j] != '\0')c[i+j] = b[j];
else break;
if (c[i + j] != '\0')break;
}
c[i + j + 1] = '\0';
printf("%s", c);
}
for (i = 0; i < strlen(c); i++)
这里就错了,c没有输入,你这样得不到它的长度
假设c的长度足够,可以这么写
...
gets_s(b);
int i = 0, j = 0;
while (a[i]) { c[i] = a[i]; i++; }
while (a[j]) { c[i + j - 1] = b[j]; j++; }
c[i + j - 1] = '\0';
printf("%s", c);
不能用strlen,strlen计算字符串大小的函数,改用sizeof,用于计算数组大小。
第二个for循环中的第二个if语句去掉。
另外,问题中的代码属于简单粗暴类型的,数组c有写越界的风险,建议增加防护优化一下。