ページ 11

入力した数字の変換

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