我想问一问(最好使用缓冲区)读取文件的最佳方法是,是否需要扔掉中间符号是数字的单词。 (单词之间可以有多个空格)。文本文件可能看起来像这样的“ 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或读取整个文件。
我敢肯定,如果没有其他问题,您可以做到。