AAnonymous
你这里面错误很多啊我来给你一个个注释下// 你的代码
#include
int main() {
int i = 0, j = 0;
char str1[20], str2[20], str[50];
scanf("%s", str1);
scanf("%s", str2);
while (str1[i] != 0) {
str[j++] = str1[i++];
/**
错误1:这里i=0是干什么,str[0]显然不等于0,这里是个死循环
其实你是想把i=0写在循环结束后吧
*/
i = 0;
}
while (str2[i] != 0) {
str[j++] = str2[i++];
/**
错误2:str2[i]=0是什么鬼,这样的话就是str[1]=0.这样这个循环只会执行一次
也就是说str2只有第一个字符会被加到str中去
*/
str2[i] = 0;
}
/**
错误0:既然你要输出的是字符串%s,str[i]是什么鬼,理论上这里是个编译错误
错误3:既然上面你知道判断str1[i]!=0,说明你知道字符串是\0结尾的,那这里你看看
str怎么结尾的?
*/
printf("%s", str[i]);
return 0;
}帮你稍微改一下#include
#include
int main() {
int i = 0, j = 0;
char str1[20], str2[20], str[50];
memset(str, '\0', sizeof(char)*50);
scanf("%s", str1);
scanf("%s", str2);
while (str1[i] != 0) {
str[j++] = str1[i++];
}
i = 0;
while (str2[i] != 0) {
str[j++] = str2[i++];
}
printf("%s", str);
return 0;
}