gpt4 book ai didi

c - 首先显示文件内容然后覆盖它的程序--->给出段错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:25 25 4
gpt4 key购买 nike

程序的想法是首先显示现有文件中的内容,然后将新的句子覆盖到它上面。但它给出了段错误,所以有人可以帮我吗?它首先显示文件中的内容,但当程序开始向其写入内容时,它会崩溃。

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


int main()
{
FILE * file_ptr;
int c;
file_ptr = fopen ("file1.txt", "r+");
if(!file_ptr) printf("empty file\n");

while(1)
{
c = fgetc(file_ptr);
if( feof(file_ptr) )
{
break;
}
printf("%c", c);
}
printf("\n");

printf("Enter a sentence:\n");
gets(c);
fprintf(file_ptr,"%s",c);

fclose(file_ptr);
return(0);
}

最佳答案

你有两个问题:第一个也是导致崩溃的原因是当 gets 需要填充字符缓冲区时,你将一个 integer 传递给了它。你有在将整数打印为字符串的下一行中存在相同的问题。

第二个问题是您开始使用 gets,因为它不安全、早已过时甚至从最新的 C 标准中删除。

使用例如fgets相反,并传递给它一个适当的缓冲区(即 char 数组)。

关于c - 首先显示文件内容然后覆盖它的程序--->给出段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27291554/

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