При l oop множественный ввод в одну переменную в C - PullRequest
0 голосов
/ 24 апреля 2020

Я пишу программу, которая предполагает получение цифр и букв и преобразование их в целое число после хранения их в одной переменной.

(да, это звучит странно, но это действие, которое я должен сделать)

Как указано ниже:

User = 1 -- Program receives: 49 (1 as per Ascii) - 48 (0 - Ascii) -- Output: 1

User = a -- Program receives: 97 (1 as per Ascii) - 96 (0 - Ascii) -- Output: 1 

User = B -- Program receives: 66 (B as per Ascii) - 64 (0 - Ascii) -- Output: 2 

Конец файла: Окончательный результат должен быть: 112 (строка)

Что я хочу достичь: Окончательный результат должен быть: 112 (целое число)

Я объявил переменные буквы для получения ввода. Я установил максимум 200 входов. Я пытался использовать scanf(" %c", &letter) для хранения каждого ввода внутри переменной, но в конце do while l oop я получаю "ÿ" в качестве вывода.

Когда я использую fgets(buchstabe, 200, stdin) Программа даже не продвигается go. Это как-то связано с windows системой?

Вот код:

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h> 

int main () {

    char letter;
    int count = 0;

    do{
        printf("Geben Sie ein Buchstabe ein: ");
        fflush(stdout);
        scanf(" %c", &buchstabe); //here i receive the "ÿ" as output

        //fgets(buchstabe, 200, stdin); //here i have no output at all

        /*
         * this is the processing part, it convert every input according to the ASCII table.
         */
        if (buchstabe >= 48 && buchstabe <=57) {
            printf("%d\n\n", buchstabe - 48);
        }else if(toupper(buchstabe) >= 65 && toupper(buchstabe) <= 90) {
            printf("%d\n\n", toupper(buchstabe) - 64);
        }

        count++;

        //I know this EOF looks terrible, but it was the only way i could use it on windows.

    }while ((buchstabe = getchar()) != EOF);  

    printf("\n\nEingabe = %c\n", buchstabe);
    printf("Eingabe = %d\n", buchstabe);
    printf("\nContador = %d\n", count - 1);

    return 0;
}
...