3

入力として文字を取り、ユーザーが入力として 0 を与えるまで、その ascii 値を出力として与えようとしています。動作しますが、余分な ascii 値 10 が常に表示されます。私は何を間違っていますか?

#include <stdio.h>
#include <stdlib.h>
int main(void){
    printf("Welcome to ASCII:\n");
    char input;
    while(input != 48){
        scanf("%c", &input);
        printf("ascii: %d\n", input);
    }
    printf("done\n");

}

出力

Welcome to ASCII:
e
ascii: 101
ascii: 10
h
ascii: 104
ascii: 10
l
ascii: 108
ascii: 10
0
ascii: 48
done
4

2 に答える 2

2

10 は の ASCII 値で'\n'、 を押したときに生成される改行文字ですEnter。その文字のチェックを追加して、その値を出力しないようにすることができます。

'0'また、ASCII 値 48 を記述する代わりに使用するのも良いスタイルです。

while (input != '0') {
    scanf("%c", &input);

    if (input != '\n') {
        printf("ascii: %d\n", input);
    }
}
于 2012-10-16T01:00:37.357 に答える
2

ASCII 値 10 は改行文字です。あなたはEnterあなたのキャラクターの間を打っています。それがこれが印刷されている理由です.

于 2012-10-16T01:00:53.970 に答える