我试图将2个字符串组合成一个而不使用strcat函数,但是出现一些错误,有人可以帮助我吗?
#include<stdio.h>
#include<conio.h>
#include<string.h>
char str[200];
char *combine(char *str1,char *str2){
int i,j ,k;
while (str1[i]) str[k++] = str1[i++];
while (str2[j]) str[k++] = str2[j++];
str[k]= '\0';
return str;
}
void main(void){
char str1[100], str2[100];
printf("string1:"); gets(str1);
printf("string2");gets(str2);
printf("combination of 2 strings: %s",combine(str1,str2));
getch();
}
答案 0 :(得分:1)
i,j,k
有垃圾值,因为它未初始化会稍微改变你的组合功能
char *combine(char *str1,char *str2){
int i=0,j=0 ,k=0;
while (str1[i])
str[k++] = str1[i++];
while (str2[j])
str[k++] = str2[j++];
str[k]= '\0';
return str;
}
答案 1 :(得分:1)
代码中有很多问题。 conio.h
是非标准的,请使用getchar()
中的stdio.h
而不是getch()
。 main
返回int
,使用fgets
确保缓冲区安全,您的变量(i,j,k)未在combine
方法中初始化。这是工作代码:
#include<stdio.h>
#include<string.h>
char str[200];
char *combine(char *str1,char *str2)
{
int i=0,j=0 ,k=0;
while (str1[i]) str[k++] = str1[i++];
while (str2[j]) str[k++] = str2[j++];
str[k]= '\0';
return str;
}
int main(void)
{
char str1[100], str2[100];
printf("string1:");
fgets(str1,100,stdin);
printf("string2");
fgets(str2,100,stdin);
printf("combination of 2 strings: %s",combine(str1,str2));
return 0;
}