我想问一问(最好使用缓冲区)读取文件的最佳方法是,是否需要扔掉中间符号是数字的单词。 (单词之间可以有多个空格)。文本文件可能看起来像这样的“ asd4ggt gklk6k k77k 345k ll4l 7”,因此我需要扔掉“ asd4ggt”和“ 7”(我不需要扔掉“ k77k”,因为它的符号数是偶数,所以没有t中间符号)。换句话说,符号可以是0到9,A到Z,a到z(仅简单的英文字母)

我想逐字读取一个文本文件:如果一个单词的符号数是偶数,则将其读入缓冲区,然后将其写入文件,但是如果符号数为奇数,则必须检查其中间符号是否为数字,并且如果是的话,我跳过这个词,转到下一个词。
这是思考如何完成此任务的正确方法吗?

最佳答案

根据您的评论,我们得出以下结论:

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

int evenCheck(const char *ptr);
size_t middleCheck(const char *ptr);

int main(void){
    const char *ptr = "t4k4k";
    size_t middle = middleCheck(ptr);

    if( evenCheck(ptr) == 0){
        printf("Output to file the word %s\n",ptr);
    }else{
        if ( isdigit(ptr[middle]) ){
            printf("Ignoring the word %s, because has the number %c in the middle\n",ptr, ptr[middle]);
        }else{
            printf("Output to file the word %s, because the middle is %c which is a Letter\n",ptr, ptr[middle]);
        }
    }
}

int evenCheck(const char *ptr){
    size_t len = strlen(ptr);

    if ( (len % 2) ){
       return 1;
    }

    return 0;
}

size_t middleCheck(const char *ptr){
    size_t middle = strlen(ptr) / 2;

    return middle;
}


输出:

Output to file the word t4k4k, because the middle is k which is a Letter


现在您正在询问如果文件中有多个单词时该如何做。

一种选择是将文件保存为Multi-Dimensional array或读取整个文件。

我敢肯定,如果没有其他问题,您可以做到。

09-30 21:42
查看更多