gpt4 book ai didi

c - 按引用传递文件名时出错 (C)

转载 作者:太空宇宙 更新时间:2023-11-04 07:04:39 24 4
gpt4 key购买 nike

我需要为每个引用传递一个字符指针和文件名,并在同一个函数中为指针分配一个大小。 (在程序中它从文件中读取它需要分配的大小)。

我创建了文件并在十六进制编辑器中检查了它,它确实存在。

我已经尝试在 GCC 和 Cygwin 上运行它,它似乎不是编译器特定的问题。

下面的代码只是准系统,但仍然包含相同的错误:GDB 告诉我这是由文件不存在引起的段错误。 (“没有这样的文件或目录”)。

我哪里出错了?

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define SIZE 50
#define NAME "name"

int loadFile(char** board, char* filename);

int main(int argc, char const *argv[])
{
char* board;
char* filename = NAME;

loadFile(&board, filename);

board[49] = '\0';

return 0;
}


int loadFile(char** board, char* filename)
{
FILE* source = fopen(filename, "rb");

if(source == NULL)
{
printf("Error loading file.\n");
return -1;
}

*board = malloc(SIZE);

if(fread(*board, sizeof(char), SIZE, source) != SIZE)
{
fclose(source);
printf("Error loading file.\n");
return -2;
}
return 0;
}

最佳答案

根据许多评论和建议,当传递常量字 rune 字时,我看到了奇怪的事情:

#define NAME "name"
char* filename = NAME;

这会将指向常量字 rune 字的指针分配给 filename。请尝试:

#define NAME "name"
char filename[] = NAME;

关于c - 按引用传递文件名时出错 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34182301/

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