gpt4 book ai didi

c - 如何从 getword 处理的文件中省略单个单词

转载 作者:行者123 更新时间:2023-11-30 15:55:31 27 4
gpt4 key购买 nike

我的任务是编写一个程序,该程序应该在前面的程序中的特定序列之后省略一个单词。我已经准备好了一个有效的 getword 程序(返回 char *),现在我只在 main 中遇到问题,其中我有以下代码片段,它允许我检测应该在哪里删除该单词。但我不知道如何从输出文件中实际省略/删除该单词。

int main(int argc, char **argv)
{
FILE *infile = NULL, *outfile = NULL;
char *word = NULL;
int c;
int yes = 0;
int counter = 0;

/* completely irrelevant - opening, writing to files, error messages etc. */
while (1) {
c = fgetc(infile);

word = getword(infile);
if (counter == 2) {
counter = 0;
yes = 0;
/* here it should somehow omit the word */
continue;
}
if (choose(word, strlen(word))) {
fputs(word, outfile);
counter++;
yes = 1;
} else {
fputs(word, outfile);
if (yes == 1) {
counter--;
}
}
free(word);
}
/* completely irrelevant */
}

编辑:添加以澄清

“getword 只是读取一个单词,它不会执行任何检查是否是我要查找的单词。main() 会进行此检查。当满足 if (choose) 时,则意味着该单词包含序列我正在寻找的字母,并且应该省略该特定单词之后的第二个单词。变量“counter”和“yes”可能不是完美的算法,但首先我希望它能够工作,然后我会尝试简化一下。“Counter”最多计数 2 来确定要省略哪个单词,“yes”有助于在我们移动到不满足 if (choose) 条件的单词后增加计数器。

提前致谢!

最佳答案

您不应该从输出文件中删除该单词。您需要从输入文件中省略它。

word = getword(infile);

我想你在这里得到了需要省略的词。不是吗?你可以得到这个单词的长度并进行下一个循环

int len = strlen(word); 
for (int i=0; i<=len; i++)
fgetc(infile); //we also omit the special char

从这一刻起,您可以继续

编辑:我认为检查

if(!isalpha(c)) 

不好,因为空格不是字母。可能这个变体更好

if (c!='\\') 

在这种情况下,字符'\'是一个特殊字符。

关于c - 如何从 getword 处理的文件中省略单个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12110095/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com