ページ 1 / 1
入力した数字の変換
Posted: 2011年7月31日(日) 08:38
by ガムテープ
入力した数を 指定した進数で表示するプログラムを作りたいのですが、
後ろのscanfが入力できずに処理が終わってしまいます。
下のような実行画面になってしまい、どこが違うのかが把握できません
教えてください。
{
数を入力 10
アルファベット?(略)10
}
コード:
#include<stdio.h>
main()
{
char m;
int su;
printf("10進数の整数?");
scanf("%d",&su);
printf("アルファベット(o or h or d)?");
scanf("%c",&m);
switch(m){
case 'o' : printf("%o",su); break;
case 'h' : printf("%x",su); break;
case 'd' : printf("%d",su); break;
default: printf("%d",su); break;
}
}
Re: 入力した数字の変換
Posted: 2011年7月31日(日) 08:55
by みけCAT
最初のscanfで入力した改行が次のscanfに入力されてしまっています。
コード:
void deletenewline(void) {
int c;
while(1) {
c=getchar();
if(c=='\n' || c==EOF)break;
}
}
この関数を最初のscanfの後で呼び出すといいと思います。
Re: 入力した数字の変換
Posted: 2011年7月31日(日) 09:22
by ガムテープ
空の文字定数がありますというふうにエラーがでてしまい、うまく動作しません
今更ですが使っているソフトは visual stadio2010です
Re: 入力した数字の変換
Posted: 2011年7月31日(日) 09:22
by ガムテープ
空の文字定数がありますというふうにエラーがでてしまい、うまく動作しません
今更ですが使っているソフトは visual stadio2010です
Re: 入力した数字の変換
Posted: 2011年7月31日(日) 09:36
by みけCAT
Ideoneだとうまく動くんだけどなあ・・・
コード:
#include<stdio.h>
void deletenewline(void) {
int c;
while(1) {
c=getchar();
if(c=='\n' || c==EOF)break;
}
}
main()
{
char m;
int su;
printf("10進数の整数");
scanf("%d",&su);
deletenewline();
printf("アルファベット(o or h or d)?");
scanf("%c",&m);
switch(m){
case 'o' : printf("%o",su); break;
case 'h' : printf("%x",su); break;
case 'd' : printf("%d",su); break;
default: printf("%d",su); break;
}
}
C言語で実行:
http://ideone.com/8L10j
C++で実行:
http://ideone.com/2Prlc
ほかの人の返信を待ちましょう。
Re: 入力した数字の変換
Posted: 2011年7月31日(日) 09:42
by ガムテープ
ありがとうございます。出来ました
私の打つ場所が間違ってましたw