编一程序,将两个字符串连接起来,不要用strcat函数。我的输出结果为空,请问我的代码哪里错了?感谢解答!
#include <stdio.h>
int main()
{
char a[120]={0},b[120]={0};
int i,m,n;
scanf("%s",a);
scanf("%s",b);
for(i=0;a[i]!='\0';i++)
{
m++;
}
for(i=0;b[i]!='\0';i++)
{
n++;
}
for(i=0;i<=119;i++)
{
a[m+1]=b[n+1];
m++;
n++;
}
printf("%s",a);
}
你要理解你的思路,以及注意你代码的细节,尤其是数组操作,字符串操作
要注意知识点:
1:数组存储字符串,默认以'\0'终结
2:n长数组下标是从0~n-1啊
3:你定义比较大的内存,保证了数组不越界了,还好
4:注意连接时逻辑思路
int main()
{
char a[120] = { 0 }, b[120] = { 0 };
int i, m = 0, n =0;
scanf("%s", a);
scanf("%s", b);
//注意 你这里求得是a的长度 而下标是从0开始 所以下一个赋值应该是a[m]
for (i = 0; a[i] != '\0'; i++)
{
m++;
}
//注意 你这是想求b的长度 长度为n 则对应的下标应该是 0~n-1
for (i = 0; b[i] != '\0'; i++)
{
n++;
}
for (i = 0; i <=n; i++) //你这里应该遍历b的字符串 从0~n,依次给加到a数组后面 b[n]是'\0' 直接加上
{
a[m] = b[i]; //这里就把b的字符赋值给a的后面了
m++; //然后a最后位置后移
}
printf("%s", a);
}
你的m和n都没有初始化
话说,m和n根本就是没用的俩变量
你直接用i和j不好吗,你的m就等于i,n就等于j
for(i=0;a[i]!='\0';i++);
i--;
for(j=0;b[j]!='\0';j++)
{
a[i++]=b[j];
}
写的好麻烦啊,mn也没初始化
strcat不能用,能不能使用strlen直接求字符串长度?
m=strlen(a);
n=strlen(b);
for(i=0;i<=119;i++)
{
a[m+i]=b[n+i];
}