gpt4 book ai didi

c - fopen 在 Linux 中失败,但在 Windows 中工作

转载 作者:行者123 更新时间:2023-11-30 17:56:32 26 4
gpt4 key购买 nike

当我运行下面的代码时,它在 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;
}

最佳答案

不仅可以在系统命令失败时使用 perror() 进行调试。

您可以像这样修改代码:

...

if (file == NULL)
{
perror("fopen");
return NULL;
}

...

returnStr = malloc(*finalLength+1); /* note that casting 'malloc()' is not necessary and also not recommended uin C */
if (!returnStr)
{
perror("malloc");
return NULL;
}

...

if (fread(returnStr, sizeof(char), *finalLength, file) != *finalLength)
{
perror("fread");
...

fseek()ftell()fclose() 的调用添加错误检查留作练习。

关于c - fopen 在 Linux 中失败,但在 Windows 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13455745/

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