Печать чисел в C - PullRequest
       79

Печать чисел в C

0 голосов
/ 20 марта 2020

Так что моя проблема в том, что я хочу напечатать числа, которые приходят с терминала, в то время как числа отличаются от EOF.

Например, если в качестве входных данных указать 007, я хочу, чтобы выходной сигнал был равен 7, или, если я установил 42, я хочу, чтобы выходной сигнал был равен 42.

Но по какой-то причине выходной сигнал, который я получаю это случайное число, которое я не могу понять.

программа:

#include <stdio.h>

void ex04();

int main() {
    ex04();

return 0;
}

void ex04() {
    int c;
    c = getchar();
    while (c != EOF) {
        printf("%d\n",c);
        c = getchar();
    }
}

Input: 007

my Output:

           48
           48
           55
           10

Correct Output: 7

Любая помощь будет оценена.

1 Ответ

3 голосов
/ 20 марта 2020

getchar предназначен для ввода одного символа, включая символы пробела, например, символа новой строки '\n', который имеет код 10.

Так что, если вы вводите, например, число 42, тогда первый вызов getchar возвращает символ «4» с кодом ASCII 52, а второй вызов - символ «2» с кодом ASCII 50.

Вместо этого используйте функцию scanf, как, например,

for ( int c; scanf( "%d", &c ) == 1; ) {
    printf("%d\n",c);
}

Обратите внимание, что в вашем вопросе есть опечатка

my Output:

           48
           48
           58
           10

Correct Output: 7

Код ASCII символа '7' - 55, а не 58. :)

...