2016-04-05 12 views
0

char var_name[200];のコマンドとそれに続くtypedefを含む構造体があります(typedef struct list_var* data)、パラメータchar* varを取得する関数があります。この機能では、私は次のことを試してみてください。の文字列としての文字

data new_var = (data) malloc(sizeof(struct list_var)); 
new_var->var_name = var 

しかし、この行に私は* char型からchar型[200]を入力するために割り当てるときに、」互換性のない型を言って、エラーを取得し

私を助けてください

答えて

1

文字列をコピーするために使用strcpy

strcpy(new_var->var_name, var); 
+0

ありがとうございました、それは常にそれがパラメータとしてポインタの問題だと思っていた – user5638730

3

は、この記事をチェックアウト:Char array in a struct - incompatible assignment?

配列はCで代入不可能です。strcpyを使用する必要があります。

strcpy(new_var->var_name, var); 
+0

ありがとう、それについて考えていない、いつもそれはパラメータとしてポインタの問題だと思った – user5638730

0
data new_var = (data) malloc(sizeof(struct list_var)); 

あなたは今200文字、配列new_var->var_nameためのメモリを含む、struct dataためのメモリを割り当てられています。すなわち、ポインタ - - 200文字の配列に

new_var->var_name = var; 

今、あなたはchar *を割り当てます。

はい、私は、文字配列と文字ポインタの両方を時々 "文字列"と呼んでいますが、それはちょうど精神的なショートカットであり、間違ったことをよく考えると思います。

あなたがここにこれが動作するように期待していない、次のいずれか

int array[200]; 
int x = 42; 
array = &x; 

なぜそれがchar[]/char*のために働く必要がありますか?

希望するものはstrcpy/strncpyです。

関連する問題