Ввод максимум 256 символов в C - PullRequest
0 голосов
/ 30 августа 2018

Вопрос ввода / вывода:

Меня попросили получить ввод от пользователя и проанализировать его. Проблема в том, что моя программа должна обрабатывать любую длину ввода и обрабатывать любые строки ввода, длина которых превышает 256 символов, как недействительные и печатать сообщение соответствующим образом.

В настоящее время я использую fgets для получения строки ввода и strtok для последующего ее анализа, но это проблема с очень длинной строкой ввода.

Как я мог решить эту проблему?

мой код до сих пор:

char userInput[1024];
        char *token = NULL;

        while (!feof(stdin)) {
                    fflush(stdin);
                    if (fgets(userInput, 1024, stdin) != NULL) {
                    token = strtok(userInput, " \t\r\n");
                        if (token != NULL) {



                            if (strncmp(userInput, "fiver", 5) == 0) {

                                            printf("5");
                                            }
                            else if (strncmp(userInput, "four", 4) == 0) { printf("4");}

1 Ответ

0 голосов
/ 30 августа 2018

Иметь массив или 257 или 258 символов (в зависимости от того, считать ли новую строку среди этих 256) и читать в нее, используя fgets, передавая размер 257 или 258. Затем проверьте длину строки с помощью strlen(). Если strlen(buf) - это максимальная длина строки , включая символ новой строки, то проверьте strlen(buf)-1-й символ - если он \n, то все в порядке, в противном случае у вас слишком длинный линия.


Или просто используйте fgetc вместо fgets, считая до '\n' или 256, в зависимости от того, что наступит раньше.

...