簡単な足し算or引き算を標準入力で渡してfgetsで取得し、
取得した数式および等式をsscanfでそれぞれの変数に代入するプログラムを作成しています。
イメージは以下の通りです。
ex)標準入力の例
3 + 2 = 5
変数aに 3 を代入
変数bに + を代入
変数cに 2 を代入
変数dに = を代入
変数eに 5 を代入
作成したプログラムは以下になります。
C
1#include <stdio.h> 2 3int main(void){ 4 char str[100]; 5 char a,b,c,d,e; 6 fgets(str, sizeof(str),stdin); 7 sscanf(str, "%c" "%c" "%c" "%c" "%c", &a, &b, &c, &d, &e); 8 9 //変数の確認 10 printf("%c" "%c" "%c" "%c" "%c", a, b, c, d, e); 11 return 0; 12}
上記プログラムを実行し、「3 + 2 = 5」を入力すると、3 + 2と表示されました。
そのため変数d,eにはなぜか代入されていないことがわかったのですが、
実行エラーもコンパイルエラーも発生していないためその理由がわかりません。
試しに「=」のみを標準入力し、変数の中身を確認する以下のプログラムを実行したところ
問題なく変数に「=」が代入されていたためますますわからなくなってしまい。。。
C
1#include <stdio.h> 2 3int main(void){ 4 char str[100]; 5 char a; 6 fgets(str, sizeof(str),stdin); 7 sscanf(str, "%c", &a); 8 printf("%c\n", a); 9 return 0; 10}
お手数ですがわかる方ございましたらご教示いただけないでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/09 05:43