2016-03-22 86 views
0
#include <stdio.h> 
#include <string.h> 
int main(){ 
char a[7]= "car"; 
char b[7]="yyoug"; 
strcat(a,b[2]); 
puts(a); 
    return 0; 
} 

這不會編譯。它表示「傳遞'strcat'的參數2會使得整型指針沒有投射。」我沒有被教過使用指針。如何將字符串數組的元素連接到字符串數組?

+0

'B [2]'給數組中的第三個元素的值。 '&b [2]'給出地址..這是預計從'strcat()' – Gopi

+0

您期望的輸出是什麼? – jeremy

+0

謝謝!但現在它會將「oug」添加到「car」一詞中。我想要的是字母'o' –

回答

3

b[2]char類型,但strcat預計它的兩個參數都是char *類型。
改爲使用strncat。如果傳遞的第三個參數是1

strncat(a, &b[2], 1); 
+0

謝謝! –

1

這將追加只有一個字節,即b[2]到第一個字符串如果你只是想用strncat因爲你想了解它是如何工作的,然後@hacks例子是完全地完美。但如果你只是想在字符Concat的到a你也可以使用

a[3] = b[2];

但是請記住,無論是解決方案僅適用,如果目標數組,你的情況a足夠大。

0

不使用malloc,這可能有助於解釋發生了什麼事情在

#include <assert.h> 
#include <stdio.h> 
#include <string.h> 
int main(){ 
    //positions 0 1 2 3 
    //"car" == ['c', 'a', 'r', '\0'] 
    char a[7] = "car"; 
    char b[7] = "yyoug"; 

    //strlen("car") == 3; 
    //"car"[3]  == ['\0']; 

    a[strlen(a)] = b[2]; 
    assert(a[3] == 'o'); 

    a[strlen(a) + 1] = '\0'; 
    assert(a[4] == '\0'); 
    puts(a); 
    return 0; 
} 
相關問題