我有这个 C 函数,对我来说它似乎以两种方式随机运行: 1. 仅当输入了“menu”并因此调用了 user_cfg 时,while-loop 在指向现有路径后继续运行几次文件作为输入输入,然后返回。2. 如下所示,当输入现有文件的路径作为输入时,出现分段错误。据我所见,我没有更改代码中的任何内容,因为它在 30 分钟前正常工作(除了上面提到的问题)。
char *user_cfg() {
printf("\nProvide the path for the configuration file or enter \"menu\" to go back:\n");
char escape[5] = {"menu"};
char buf[101] = {0};
char path_input[101] = {0};
char *userSpecifiedFilepath;
do {
if (fgets (buf, sizeof(buf), stdin) != NULL)
if (sscanf(buf, "%s", &path_input)) {
userSpecifiedFilepath = path_input;
if (*path_input == *escape)
user_cfg();
}
} while (!file_exists(userSpecifiedFilepath));
return userSpecifiedFilepath;
}
bool file_exists(const char *filename) {
FILE *file;
file = fopen(filename, "r");
fclose(file);
if (file != NULL) {
return true;
}
return false;
}