2017-04-21 18 views
-1

この宿題を与えられる: 3つのパラメータを持つ関数を書く:最初の2つは3番目に結合される。 例:s1=”abcde”,および結果:s3=”a1b2c3d4e567”Cで2つの文字列をランダムに結合する方法は?

私のコードは、これまでのようになります。

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
int homework(char a[], char b[]) 
{ 
char c[210]={'0'}; 
int h1=strlen(a); 
int h2=strlen(b); 
int i=0; 
int j; 
int db=0; 
int l=0; 
while (h1>=0 && h2>=0) 
{ 
    db++; 
    c[i]=a[l]; 
    c[i+1]=b[l]; 

    h2--; 
    h1--; 
    i+=2; 
    l++; 

    } 
h1++; 
h2++; 


printf("%d %d",h1,h2); 

if (h1>0){ 
i--; 
while (h1>0) 
{ 
    c[i]=a[l]; 
    l++; 
    i++; 
    h1--; 


} 
} 


if (h2>0){ 
i--; 
while (h2>0) 
{ 
    c[i]=a[l]; 
    l++; 
    i++; 
    h2--; 
} 

} 

for (j=0; j<strlen(a)+strlen(b); j++) 
printf("%c",c[j]); 


} 




int main() 
{ 
char a[100],b[100]; 

gets(a); 
gets(b); 
homework(a,b); 


return 0; 
} 

問題は二つの文字列の長さが等しいときにのみ動作します。

+1

はあなたの問題を私たちはあなたを助けることができる前に、あなたがこれまで試みられてきたものたちを示さなければなりません。 –

+0

本当に実際には、パラメータ3で使用できるサイズを渡すべきです。 'int combine(const char * src1、const char * src2、char * dst、size_t len); ' – pmg

+1

ようこそ。問題を解決するために、あなたのattempsをコードの形で表示する必要があります。 – sjsam

答えて

-1

あなたはこれを試すことができます。

void Homework(char *str1, char *str2) 
{ 
    int i; 
    int j; 
    int k; 
    char *str3; 

    i = 0; 
    j = 0; 
    k = 0; 
    str3 = malloc(sizeof(char) * (strlen(str1) + strlen(str2)) + 1); 
    while (strlen(str3) != strlen(str1) + strlen(str2)) 
    { 
     if (k % 2 == 0 && str1[i] != 0) 
     { 
      str3[k] = str1[i]; 
      i++; 
     } 
     else if (k % 2 == 1 && str2[j] != 0) 
     { 
      str3[k] = str2[j]; 
      j++; 
     } 
     else if ((i + 1) > strlen(str1)) 
     { 
      str3[k] = str2[j]; 
      j++; 
     } 
     else if ((j + 1) > strlen(str2)) 
     { 
      str3[k] = str1[i]; 
      i++; 
     } 
     k++; 
    } 
    printf("Your combine string is: %s. \n", str3); 
} 
関連する問題