我目前正在处理这个任务,但卡住了。目标是读取一个文件并查找这些字符值是否存在于文件中的字符串中。我必须将来自文件的字符串与作为参数输入的另一个字符串进行比较。然而,只要文件中的每个字符值都在字符串中,它就会“匹配”。
例如(输入和输出):
./a.out file1 done done is in bonehead done is not in doggie 例如(file1):
bonehead doggie 如您所见,比较字符串的顺序并不重要,并且文件也遵循每行一个单词的格式。我已经编写了一个程序,可以找到另一个字符串中是否存在字符值,但这只是问题的一部分。有什么想法可以解决这个问题吗?
例如(输入和输出):
./a.out file1 done done is in bonehead done is not in doggie 例如(file1):
bonehead doggie 如您所见,比较字符串的顺序并不重要,并且文件也遵循每行一个单词的格式。我已经编写了一个程序,可以找到另一个字符串中是否存在字符值,但这只是问题的一部分。有什么想法可以解决这个问题吗?
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv){
FILE *f = fopen(argv[1], "r");
char *line = NULL;
size_t len = 0;
ssize_t read;
char *word = argv[2];
if(argc != 3){
printf("./a.out <file> <word>\n");
exit(EXIT_SUCCESS);
}
if(f == NULL){
printf("file empty\n");
exit(EXIT_SUCCESS);
}
// confused what this loop does too
while((read = getline(&line, &len, f)) != -1){
char *c = line;
while(*c){
if(strchr(word, *c))
printf("can't spell \"%s\" without \"%s\"!\n", line, word);
else
printf("no \"%s\" in \"%s\".\n", word, line);
c++;
}
}
fclose(f);
exit(EXIT_SUCCESS);
}
all_found
的变量,其值为真。如果strchr
返回NULL
,则将all_found
设置为假,并退出循环。 - Antti Haapala -- Слава Україніstrchr
检查该字符是否在你的输入word
中。难道你不应该做相反的操作吗? - Julien Lopezchar *c = word;
е’Ңstrchr(line, *c)
пјӣдҪ жӯЈеңЁжЈҖжҹҘе‘Ҫд»ӨиЎҢдёӯеҚ•иҜҚзҡ„жүҖжңүеӯ—з¬ҰжҳҜеҗҰеӯҳеңЁдәҺз»ҷе®ҡзҡ„иЎҢдёӯгҖӮ - Antti Haapala -- Слава Україніwhile (*c) {...}
循环之外。 - Antti Haapala -- Слава Україні