2

だから私は構造を学んでいて、動的メモリ割り当てで文字列を入力しようとしています。

これが私がこれまでに持っているものです:

  typedef struct{
    char foo[81]; 
  } TYPE;


 void function(TYPE get[]){
   char a[81];
   scanf("%s", a);

   get->foo = malloc(strlen(a)+1*sizeof(char)); //this line produces an error that it is not assignable

   strcpy(get->foo,a);

   return; 

 }

その声明の何が問題なのかわかりません。どんな助けでも大歓迎です。

4

3 に答える 3

8

foo配列オブジェクトでありポインターではないため、操作を使用できません

get->foo = (char*)calloc(strlen(a)+1,sizeof(char));

(void *)typeに a を割り当てようとしていますがchar[81]、これはまったく互換性がありません。この場合、左辺値はポインタでなければなりません。

于 2013-06-11T07:27:42.087 に答える
5

foochar ポインターであることを宣言する必要があります。

typedef struct{
    char * foo; 
} TYPE;
于 2013-06-11T07:24:44.987 に答える