题目要求:把两个字符串连接在一起
#include<stdio.h>
#include<string.h>
void link(char a[50], char b[50]);
int main()
{
char c[50], d[50];
printf("请输入想要连接的两个字符串\n");
link(c,d);
printf("结果为%ch\n", c);
return 0;
};
void link(char a[50], char b[50]) {
scanf("%s", a);
scanf("%s", b);
int i,n,m;
int j = 0;
n=strlen(a);
m=strlen(b);
for (i = n; j < m-1; i++,j++) {
a[i] = b[j];
}
return;
}
结果如图

已修改
#include <stdio.h>
#include <string.h>
void link(char a[50], char b[50]);
int main()
{
char c[50], d[50];
printf("请输入想要连接的两个字符串\n");
link(c, d);
printf("结果为%s\n", c);
return 0;
};
void link(char a[50], char b[50])
{
scanf("%s", a);
scanf("%s", b);
int i, n, m;
int j = 0;
n = strlen(a);
m = strlen(b);
for (i = n; j < m; i++, j++)
{
a[i] = b[j];
}
return;
}
你的输出应为%s,且你的字符串复制没有复制最后一位
修改如下,问题见注释:
#include<stdio.h>
#include<string.h>
void link(char a[50], char b[50]);
int main()
{
char c[50], d[50];
printf("请输入想要连接的两个字符串\n");
link(c, d);
printf("结果为%s\n", c);//printf("结果为%ch\n", c);
return 0;
};
void link(char a[50], char b[50]) {
scanf("%s", a);
scanf("%s", b);
int i, n, m;
int j = 0;
n = strlen(a);
m = strlen(b);
for (i = n; j < m ; i++, j++) {//for (i = n; j < m-1 ; i++, j++)
a[i] = b[j];
}
a[i] = '\0';//字符串结束标志
return;
}