gpt4 book ai didi

在 C 中检查字符串数组中的字符串

转载 作者:行者123 更新时间:2023-12-04 05:57:11 24 4
gpt4 key购买 nike

我有一个接受文件名(字符串)的函数,我想要一个文件名(字符串)数组来检查传入的文件名是否在数组中,如果没有,则将其添加到数组中。这是我到目前为止所得到的。

bool read_file(char * filename, bool warnings){
//Check to see if filename is in array files
static char * files[MAXFILES];
static int counter = 0;
for(int i=0;i<counter;i++){
if(strcmp(filename,files[i]) == 0){
fprintf(stdout, "Error\n");
return 0;
}
else{
files[counter]=filename;
counter++;
}
}
FILE * fp = fopen(filename,"r");
if(fp == NULL){
if(warnings){
fprintf(stderr, "Can't open the file %s\n",filename);
return 0;
}
else{
return 0;
}
}
else{
fclose(fp);
fp = NULL;
return 1;
}
}

出于某种原因,它不会将文件名添加到 files[] 任何帮助都将被应用。

最佳答案

看看循环中的第一次(当 i == 0counter == 0 时):

static int counter = 0;
for(int i = 0; i < counter; i++) {
// this never runs
}
i < counter总是假的,因为 counter在 for 循环体中递增。

你需要重新思考你的逻辑。这个函数做了很多事情。也许像这样在循环前面的东西会有所帮助:
if (counter == 0) {
// first time in the function, just add the filename
files[counter]=filename;
counter++;
}
else {
for (int i = 0; i < counter; i++) {
...
}
}

但是,将其拆分为几个函数可能会更好。一个用于向数组添加文件名,另一个用于检查它是否已经存在,第三个用于打开文件等。

关于在 C 中检查字符串数组中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9372775/

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