将字符串附加到C中的一个字符串

时间:2014-03-04 06:13:47

标签: c

我试图将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();    
}

2 个答案:

答案 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;
}