C言語の問題です。
1行目に星座が、2行目に行数nが与えられます。その次の行からn行の星座(半角スペース一つあけて)血液型のアルファベットが与えられます。
入力例はこのようなものです。
otomeza
4
shishiza O
tenbin O
otomeza AB
mizugameza B
1行目に与えられた星座の血液型のみを出力したいのです。
よってこの場合の出力は
AB
という感じです。
私は(ぐちゃぐちゃになっているかと思います、すみません…)一応以下のように記述しました。
#include <stdio.h> int main(void){ char buf[1000]; int n; char seiza[1000]; char seiza2[100]; char bloodtype[100]; int count = 0; int i; fgets(buf, sizeof(buf), stdin); sscanf(buf, "%s", seiza); //printf("%s\n", seiza); for(i = 0; seiza[i] != '\0'; i++); int length = i; fgets(buf, sizeof(buf), stdin); sscanf(buf, "%d", &n); for(int i = 0; i < n; i++) { fgets(buf, sizeof(buf), stdin); sscanf(buf, "%s %s", &seiza2, &bloodtype); //printf("%s %s\n", naniza, bloodtype); for(int j = 0; j < length; j++) { if(seiza[j] == seiza2[j]) { count++; } } if(count == length) { printf("%s", bloodtype); } } }
明らかに出力がおかしく、ABBAと出たり、他のケースで試すと何も出なくなったり…という感じです。
特に printf("%s", bloodtype); は唐突にbloodtypeを出してきた感じで自分でも変だなと感じるのですが、なかなか直せません。
初心者ではありますが、ご教示いただけますでしょうか。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー