
c言語におけるscanfでの入力についての質問です。
異なった図形(三角、四角、長方形)の面積を比較するコードを書いているのですが、三角形以外のものだとscanfでクラッシュしてしまいます。(例えば、"T 3 3 3" と入力すれば大丈夫だが、"S 4.5"や"R 6 8" と入力すると動作が止まる)これを解決するためにはどうすればよいでしょうか?scanfの書式途中まで(&aや&bまで)しか入力していなくても動作を続行させる方法はあるのでしょうか?
C言語
1#include <stdio.h> 2 3int main (void) 4{ 5 double a, b, c, tris, area; //a, b, cは各辺の長さ 6 char shape; //shapeは図形のこと。T = 三角形、S = 四角形、R = 長方形 としている 7 8 printf("Shape #1\n"); 9 m1 = scanf("%c %lf %lf %lf", &shape, &a, &b, &c); 10 11 fflush(stdin); 12 13 printf("Shape #2\n"); 14 m2 = scanf("%c %lf %lf %lf", &shape, &a, &b, &c); 15 16 if (shape == 'S'){ 17 area = a * a; 18 return 0; 19 } 20 21 else if (shape == 'T'){ 22 tris = a + b + c / 2; 23 area = sqrt(tris * (tris - a) * (tris - b) * (tris - c)); 24 return 0; 25 } 26.......コード以下省略....................................

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/10/30 20:28
2021/10/31 06:26
2021/10/31 07:39