замена int на строку с помощью getchar () и putchar () - PullRequest
0 голосов
/ 10 мая 2018

Для домашней работы мне нужно поменяться местами с персонажем. Например, если пользователь вводит 1, вывод должен быть «один». это должно работать с нуля до 5.

Моя идея заключалась бы в реализации массива char, который выглядит следующим образом.

*string[] = { "zero\0", ....., "five\0"}

Тогда я бы реализовал это в таком коде.

#include <stdio.h>

int main() 
{
    int c; 
    while((c=getchar())!=EOF)
    {
        putchar(c);
    }

    return 0; 
}

Так что мне разрешено использовать только putchar и getchar, а не кучу. Это мой подход: я бы создал цикл for, который распечатывал бы каждую букву до достижения \ 0.

Это правильный подход?

1 Ответ

0 голосов
/ 10 мая 2018

Вы на правильном пути, но вот несколько указателей.

Я не уверен, что такое *string[], но, поскольку вы заранее знаете размер вашего массива, вы можете создать массив фиксированного размера char* для хранения ваших строк следующим образом

char* arr[6] = {"zero\0", "one\0", ..., "five\0"};

Обратите внимание, что массив имеет тип (char*) и имя (arr).

Далее вы можете прочитать номер, который хотите напечатать

int c = getchar();

И вы можете использовать ранее определенный массив, чтобы получить правильную строку и зациклить ее, печатая по одному символу за раз с putchar

char* str = arr[c];
for (int i = 0; str[i] != '\0'; i++) {
    putchar(str[i]);
}
putchar('\n');

И, как указано Groo , строковые литералы неявно завершаются нулем, поэтому вам не нужно включать \0 в ваши строки. Массив может быть просто

char* arr[6] = {"zero", "one", ..., "five"};

И все будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...