почему printf ("% d", getchar ()) печатает лишние 10 - PullRequest
0 голосов
/ 06 июня 2019

В программе printf("%d", getchar()) печатает лишние 10.

когда я даю ввод как a, он печатает 9710 вместо 97, то же самое для других

#include <stdio.h>

int main() {

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

    return 0;
}
me@Device-xx:~/Desktop/Test/Tmps$ gcc 118.c -o 118
me@Device-xx:~/Desktop/Test/Tmps$ ./118
a
9710s
11510x
12010

1 Ответ

4 голосов
/ 06 июня 2019

Вы не передали a в STDIN.Поскольку вы нажали a и Enter, вы передали a и перевод строки.Предполагая кодировку на основе ASCII (например, UTF-8),

  1. Буква a кодируется как 0x61 = 97
  2. Перевод строки кодируется как 0x0A = 10

Может быть, вы хотите

while (1) {
    int c = getchar();
    // Stop when a Line Feed or EOF is encountered.
    if (c == EOF || c == 0x0A) {
         break;
    }

    printf("%d", c);
}
...