0

私は単純なことを理解していません。

私はこのサンプルコードを持っています:

typedef struct {
  char* fname;
} PersonType;

int main() {
  PersonType *p;
  p  = (PersonType *)malloc(sizeof(PersonType));
  char * name = "Robert";

  /* this next line causes a segmentation fault */  
  strcpy(p->fname, name);

  printf("name: %s\n", p->fname);

}

「strcpy」でセグメンテーション違反が発生するのはなぜですか? 私は何を間違っていますか?

どんな助けでも大歓迎です、ありがとう!

ロブ

4

3 に答える 3

0

fname何にも初期化されていません。は、 が指すstrcpy位置から始まり、 に遭遇するまで読み続けます。fname\0

fname配列を作成して初期化します。または、fname を割り当てて初期化します。

于 2013-11-12T03:13:53.503 に答える