構造体 エラー

解決


saya  2011-12-30 12:16:50  No: 73080  IP: 192.*.*.*

#include<stdio.h>
typedef struct{
    char name[20];
    char tel[20];
    char mail[40];
} PERSON;
void print_profile(PERSON *p);
void input_profile(PERSON *p);
int main(void)
  {
    PERSON a;
input_profile(&a);
print_profile(&a);
return 0;
}
void print_profile(PERSON *p) {
    int i;
  for(i=0;2>i;i++)
  {
  printf("名前:%s\n",(p+i)->name);
    printf("電話:%s\n",(p+i)->tel);
    printf("メール:%s\n",(p+i)->mail);
  }
}

void input_profile(PERSON *p){
   int i;
  for(i=0;2>i;i++){
    scanf("%s",(p+i)->name);
    scanf("%s",(p+i)->tel);
    scanf("%s",(p+i)->mail);

  }
}

このプログラムを実行するとデバックエラーがでるのですけど
どこが悪いのでしょうか?

編集 削除
fuku  2011-12-30 14:57:09  No: 73081  IP: 192.*.*.*

ただのPERSONをPERSON[2]として扱うからです。

それ以外にもinput_profileは領域違反する可能性があります。

編集 削除
saya  2011-12-30 21:28:48  No: 73082  IP: 192.*.*.*

すみません
具体的にどうすれば良いんですか?

編集 削除
瀬戸っぷ  2011-12-31 01:45:53  No: 73083  IP: 192.*.*.*

>具体的にどうすれば良いんですか?

main()で用意しているPERSON構造体の変数aは1つしかありませんよね?
にもかかわらずポインタ渡した先のinput_profile()とprint_profile()では2つあるかのようにループを回しているのはなぜでしょう?

編集 削除
saya  2011-12-31 13:11:20  No: 73084  IP: 192.*.*.*

瀬戸っぷさん
ありがとうございます

編集 削除