char path[strlen(dictionary) + 3];
strcat(path, "./");
// dictionary is "dictionaries/large" char*
strcat(path, dictionary);
// dictionaryFile != NULL
FILE *dictionaryFile = fopen("./dictionaries/large", "r");
// dictionaryFile == NULL
FILE *dictionaryFile = fopen(path, "r");
if (dictionaryFile == NULL)
{
printf("Not success\n");
}
我正在尝试打开相对于.c文件当前目录的文件夹内的文件。
为什么当我使用路径变量fopen()
时不起作用,但是当我直接传递它有效的目录时呢?
答案 0 :(得分:8)
char path[strlen(dictionary) + 3];
strcat(path, "./");
此处path
未初始化;而strcat
期望它以空字节终止。请改用strcpy
,例如:
char path[strlen(dictionary) + 3];
strcpy(path, "./");
但是,您的代码中可能存在其他问题,因为fopen()
可能会失败。检查errno
并使用perror()
查看失败的原因。