用C输入最多256个字符

时间:2018-08-30 05:40:01

标签: c io fgets getc

I / O问题:

我被要求从用户那里获取输入并进行解析。 问题是我的程序应该能够处理 any 个输入长度,并将任何长度超过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 :(得分:5)

有一个数组或257个或258个字符(取决于是否在这256个字符中计算换行符),并使用fgets读入它,并传入大小257或258。然后使用以下命令检查字符串的长度: strlen()。如果strlen(buf)恰好是包括换行符的行的最大长度,则检查第strlen(buf)-1个字符-如果为\n,就可以了,否则你的电话线太长了。


或者只使用fgetc而不是fgets,一直计数到'\n'或256,以先到者为准。