2016-03-22 10 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で何が起こっているのかを説明するのに役立つかもしれません。 '&b [2]'はアドレスを返します。これは 'strcat()'から期待されます – Gopi

+0

あなたが探している予想される出力は? – jeremy

+0

ありがとう!今では "車"という言葉に "oug"が追加されます。私が欲しいのは、文字 'o'です。 –

答えて

3

b[2]charタイプですが、strcatは両方の引数がchar *タイプです。
代わりにstrncatを使用してください。渡された3番目の引数は1

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

ありがとう! –

1

である場合、それはあなたがちょうどあなたはそれがどのように動作するかを学びたいのでstrncatを使用したい場合は、例を@hacksすなわちb[2]最初の文字列に1バイトのみを、追加しますcompletly完璧です。あなただけaに文字にCONCATしたい場合しかし、あなたはまた、

a[3] = b[2];

を使用することができます。しかし心に留めておく、のいずれか先の配列は、あなたのケースでaが十分に大きい場合解決策は唯一、機能して下さい。このmalloc関数を使用せずに

0

は、[2] `配列の3番目の要素の値を与える

#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; 
} 
関連する問題