アドレス帳を作っているのですが
入力できるデータを自分で決められるプログラムにしてみたのですが
print_profileの方で無限ループしたので工夫してみたのですが
print_profileが無視されて動くようになりました
どうしたらいいでしょうか?
#include<stdio.h>
typedef struct{
char name[20];
char tel[20];
char mail[40];
} PERSON;
void print_profile(PERSON *p,int *a);
void input_profile(PERSON *p,int *a);
int main(void)
{
int i;
PERSON a[990];
input_profile(a,&i);
print_profile(a,&i);
return 0;
}
void print_profile(PERSON *p,int *a) {
int b;
for(b=0;*a>b;b++)
{
printf("名前:%s\n",(p+b)->name);
printf("電話:%s\n",(p+b)->tel);
printf("メール:%s\n",(p+b)->mail);
}
}
void input_profile(PERSON *p,int *a){
int i;
for(*a=0;999>*a;*a++){
scanf("%s",(p+*a)->name);
scanf("%s",(p+*a)->tel);
scanf("%s",(p+*a)->mail);
printf("処理を終わるなら0を入力\n");
scanf("%d",&i);
if(i==0)break;
}
}
xxx_profileを呼ぶ前にiを適切な値にセットすべし。
> xxx_profileを呼ぶ前にiを適切な値にセットすべし。
うんにゃ違う。本プログラムは i に値を返そうとして、返せていないだけ。
saya 氏
> for(*a=0;999>*a;*a++){
ここがおかしいわけだが、どうおかしいのかはもうちょっと自分で検討してみるべし。
全体的にあまりにもかっこ悪い。もう少し書き方を工夫してみると読みやすくなる。
> うんにゃ違う。
あ...すんません。
input_profileから戻ってきたとき、iに期待する値
が入ってるか確認しましょ。
ツイート | ![]() |