2015-04-02 61 views
0

我的任務是將v1連接到v2,功能my_strcat()必須是void。我怎樣才能使用void函數來返回串聯的字符串?C中的連接字符串

int main(void){ 
    char v1[16], v2[16]; 
    int i1, i2; 
    printf("Enter First Name: \n"); 
    scanf("%s", v1); 
    printf("Enter Last Name: \n"); 
    scanf("%s", v2); 
    i1 = my_strlen(v1); 
    i2 = my_strlen(v2); 
    printf("len: %3d - string: %s \n", i1, v1); 
    printf("len: %3d - string: %s \n", i2, v2); 
    my_strcat(v1, v2); 
    printf("Concatenated String: %s \n", v1); 
    return 0; 
} 

void my_strcat (char s1[], char s2[]){ 
    int result[16]; 
    int i = 0; 
    int j = 0; 
    while(s1[i] != '\0'){ 
     ++i; 
     result[i]= s1[i]; 
    } 
    while(s2[j] != '\0'){ 
     ++j; 
     result[i+j] = s2[j]; 
    } 
    result[i+j] = '\0'; 
} 
+0

可能重複:http://stackoverflow.com/questions/308695/how-to-concatenate-const-literal-strings-in-c – sam 2015-04-02 18:41:41

+0

只需通過一個緩衝器(例如數組)的函數存儲新的字符串。 – teppic 2015-04-02 18:43:32

+0

我該怎麼做? @teppic – user4766244 2015-04-02 18:45:14

回答

0
void my_strcat (char s1[], char s2[],char result[]){ 
    int result[16]; 
    int i = 0; 
    int j = 0; 
    while(s1[i] != '\0'){ 
     result[i]= s1[i]; 
     ++i; 
    } 
    while(s2[j] != '\0'){ 
     result[i+j] = s2[j]; 
     ++j; 
    } 
    result[i+j] = '\0'; 
} 

你可以這樣做this..I的main()宣佈第三結果字符串,其尺寸爲尺寸(V1)+尺寸(V2)+1

char result[33]; 
my_strcat(v1,v2,result); 

輸出:

Enter First Name: avinash 
Enter Last Name: pandey 
len: 7 - string: avinash 
len: 6 - string: pandey 
Concatenated String: avinashpandey 
+0

所以我需要在函數中添加'char result []'並在'main ='[s1] + v2 [s2] + 1' @avinashpandey中聲明一個字符串。 – user4766244 2015-04-02 18:49:54

+0

沒有不那樣,看看代碼。我的意思是結果字符串的大小應該等於比兩個字符串長度的總和更大.Declare結果像一個普通的字符串,但將它作爲my_strcat(v1,v2)傳遞給函數,result)。由於字符串也是一個數組,所以它被作爲參考傳遞,因此函數結果的任何變化都會反射回main()。 – 2015-04-02 18:53:02

+0

當我運行程序時,它給了我連接字符串@avinashpandey的怪異符號。 – user4766244 2015-04-02 19:03:04