gpt4 book ai didi

c - 如何修复此比较字符串(来自 argv 和 scanf)程序?

转载 作者:太空宇宙 更新时间:2023-11-03 23:37:47 24 4
gpt4 key购买 nike

试图修复此程序,该程序比较通过 argv 找到的单词和通过 scanf() 找到的单词。如果找到相同的单词,它会打印“CENSORED”,如果没有,则只打印该单词。例如,我有一个名为 beatles.txt 的文件,其中包含以下文字:保罗林戈乔治约翰

如果我编译这个程序并像这样测试它:./a.out ringo < beatles.txt ,这是输出:

审查林戈审查林戈审查林戈

然而,我希望这是输出:

保罗审查乔治约翰

这是我的代码:

int main(int argc, char* argv[]) {

char word_arr[10000][20];
int i=0;

while ( scanf("%s",word_arr[i])!=EOF) {

for (int i=1; i<argc; i++) {

if (strstr(word_arr[i],argv[i]) != NULL) {

printf("CENSORED\n");
}

else {

printf("%s\n",word_arr[i]);

}

}
i++;

}

return 0;

}

最佳答案

正如@WeatherVane 观察到的,

The inner i is shadowing the outer i. Pick another name for one of those identifiers.

这是一种方法:

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

int main(int argc, char* argv[]) {
char word_arr[10000][20];
int j = 0;

while (scanf("%s", word_arr[j]) != EOF) {
bool is_censored = false;
for (int i = 1; i < argc; i++) {
if (strstr(word_arr[j], argv[i])) {
printf("CENSORED ");
is_censored = true;
break;
}
}
if (!is_censored) printf("%s ", word_arr[j]);
j++;
}

printf("\n");
return 0;
}

关于c - 如何修复此比较字符串(来自 argv 和 scanf)程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54610365/

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