#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);
}
}
このプログラムを実行するとデバックエラーがでるのですけど
どこが悪いのでしょうか?
ただのPERSONをPERSON[2]として扱うからです。
それ以外にもinput_profileは領域違反する可能性があります。
すみません
具体的にどうすれば良いんですか?
>具体的にどうすれば良いんですか?
main()で用意しているPERSON構造体の変数aは1つしかありませんよね?
にもかかわらずポインタ渡した先のinput_profile()とprint_profile()では2つあるかのようにループを回しているのはなぜでしょう?
瀬戸っぷさん
ありがとうございます
ツイート | ![]() |