C言語
1#include <stdio.h> 2#define N 36 3 4typedef struct { 5 char mark; 6 int number; 7} list; 8 9int main(){ 10 int i,n; 11 list a[N]; 12 char b[N-1]; 13 int cnt=0; 14 15 scanf("%d",&n); 16 for(i=0;i<n;i++){ 17 if(cnt>0){ scanf("%c",&b[cnt-1]); } 18 scanf("%c%d",&a[i].mark,&a[i].number); 19 printf("%c%d ",a[i].mark,a[i].number); 20 cnt++; 21 } 22 23 return 0; 24}
上記のプログラムでは意味不明な数字が出力されます。
入力例
5
H4 C9 S4 D2 C3
出力
0 40 932673 432764 232764
しかし、
C言語
1#include <stdio.h> 2#define N 36 3 4typedef struct { 5 char mark; 6 int number; 7} list; 8 9int main(){ 10 int i,n; 11 list a[N]; 12 char b[N-1]; 13 int cnt=0; 14 15 //scanf("%d",&n); 16 for(i=0;i<5;i++){ 17 if(cnt>0){ scanf("%c",&b[cnt-1]); } 18 scanf("%c%d",&a[i].mark,&a[i].number); 19 printf("%c%d ",a[i].mark,a[i].number); 20 cnt++; 21 } 22 23 return 0; 24}
のように変数nに具体的な数字を入力すると適切な出力を得られます。
入力例
H4 C9 S4 D2 C3
出力
H4 C9 S4 D2 C3
if(cnt>0){scanf("%c",&b[cnt-1]);}
は、H4 C9 の入力での4とCの間の空白を飛ばすためにあります。
このnが具体値か否かで出力が違うのは何故かを教えていただきたいです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/14 07:05
退会済みユーザー
2019/12/14 08:50