【发布时间】:2012-11-19 14:22:48
【问题描述】:
当我运行下面的代码时,它在 linux 中失败,但在 windows 中没有问题。 文件名类似于“src/folder/file”
char* loadProgSource(const char* filename, size_t* finalLength)
{
char* returnStr;
FILE* file = fopen(filename, "rb");
if(file == NULL) return NULL;
fseek(file, 0, SEEK_END);
*finalLength = ftell(file);
fseek(file, 0, SEEK_SET);
returnStr = (char*) malloc(*finalLength+1);
if(fread(returnStr, sizeof(char), *finalLength, file) != *finalLength) {
fclose(file);
free(returnStr);
return NULL;
}
returnStr[*finalLength] = '\0';
return returnStr;
}
【问题讨论】:
-
能否提供运行输出,因为它可能是文件路径、内存泄漏......等等
-
您知道“工作目录”、“相对路径”和“绝对路径”等术语吗?
-
在无法打开文件的情况下打印errno以获取更多信息
-
这不是 C++。我看不出您的代码有任何本质上的错误;您需要告诉我们在哪里它失败了,以及发生了什么错误消息。
-
至少有两件事是错误的:1)
malloc()可能会失败并且没有处理! 2)file没有在无错误分支中关闭,因此打开的文件描述符会泄漏。