入力した数字の変換

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ガムテープ

入力した数字の変換

#1

投稿記事 by ガムテープ » 14年前

入力した数を 指定した進数で表示するプログラムを作りたいのですが、
後ろの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;
	}
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 入力した数字の変換

#2

投稿記事 by みけCAT » 14年前

最初のscanfで入力した改行が次のscanfに入力されてしまっています。

コード:

void deletenewline(void) {
    int c;
    while(1) {
        c=getchar();
        if(c=='\n' || c==EOF)break;
    }
}
この関数を最初のscanfの後で呼び出すといいと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ガムテープ

Re: 入力した数字の変換

#3

投稿記事 by ガムテープ » 14年前

空の文字定数がありますというふうにエラーがでてしまい、うまく動作しません

今更ですが使っているソフトは visual stadio2010です

ガムテープ

Re: 入力した数字の変換

#4

投稿記事 by ガムテープ » 14年前

空の文字定数がありますというふうにエラーがでてしまい、うまく動作しません

今更ですが使っているソフトは visual stadio2010です

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 入力した数字の変換

#5

投稿記事 by みけCAT » 14年前

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
ほかの人の返信を待ちましょう。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ガムテープ

Re: 入力した数字の変換

#6

投稿記事 by ガムテープ » 14年前

ありがとうございます。出来ました

私の打つ場所が間違ってましたw

閉鎖

“C言語何でも質問掲示板” へ戻る