gpt4 book ai didi

c - 小的 fopen/fwrite 问题。请提出建议

转载 作者:行者123 更新时间:2023-12-02 06:21:30 26 4
gpt4 key购买 nike

谁能告诉我这段代码有什么问题?我遇到段错误。我正在尝试将文件的第一行读入新创建的文件。

char *buffer;

int main(int argc, char *argv[])
{
FILE *source = fopen(argv[0], "r");
FILE *destination = fopen("destination", "w");

fgets(buffer, 500, source);
fwrite(buffer, 1, sizeof(buffer), destination);

}

最佳答案

您还没有为 buffer 分配任何东西。

改变:

char *buffer;

char buffer[500];

正如您现在的代码,buffer 只是一个未初始化的指针。试图取消引用它会导致未定义的行为。 (在你的情况下是段错误)


或者,您可以为buffer 动态分配内存:

buffer = (char*)malloc(500 * sizeof(char));

但是你应该记得稍后释放内存:

free(buffer);

如果您使用后一种方法,代码将如下所示:

char *buffer;

int main(int argc, char *argv[])
{
FILE *source = fopen(argv[0], "r");
FILE *destination = fopen("destination", "w");

// Allocate
buffer = (char*)malloc(500 * sizeof(char));

fgets(buffer, 500, source);
fwrite(buffer, 1, 500 * sizeof(char), destination); // Fixed here

// Free memory
free(buffer);

// Don't forget return value
return 0;
}

关于c - 小的 fopen/fwrite 问题。请提出建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685761/

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