前提・実現したいこと
入力で与えられるn人の情報を構造体の配列で保存し、与えられた検索条件によって検索の結果を出力するプログラムです。 検索条件に合う名前の人をすべて検索し、その人の情報を出力して、該当条件に合う人がいない場合は -1 を出力します。
例1)
入力:
3 masa
may 12345 22
masa 56878 36
sei 112365 64
出力:
masa 56878 36
例2)
入力:
4 yui
may 12345 22
masa 56878 36
sei 112365 64
john 4412 30
出力:
-1
検索条件に合う人を出力するコードまでは実現しましたが、該当する事項がない場合 - 1 を出力するコードはできませんでした。下のコードにするとすべて-1が出力されます。 構造体に保存した値がfor 文を回ったとき、その値がなかったらどうすればいいですか。
発生している問題・エラーメッセージ
-1
該当のソースコード
enum type {WN, PN}; union WPN { int wn; char pn[10]; }; struct info { enum type kind; union WPN n_info; }; typedef struct employee { char name[10]; struct info num; int age; }Employee; int main() { int i,kai; char c; Employee e[10]= { }; scanf("%d",&kai);//回数 char name[20]; scanf("%s",name); for(i=0;i<kai;i++){ scanf("%s %s %d",e[i].name,e[i].num.n_info.pn,&e[i].age); } for(i=0;i<kai;i++){ if(!strcmp(name,e[i].name)) printf("%s %s %d\n",e[i].name,e[i].num.n_info.pn,e[i].age); else printf("-1"); break; } return 0; }
試したこと
if else(!strcmp(name,e[i].name)!=NULL)もしてみたがbreakドアのため途中で切れます。 条件文が間違ったんでしょうか。
回答2件
あなたの回答
tips
プレビュー