gpt4 book ai didi

c - Microsoft Visual Studio C 运行时库在 filecopy.exe 中检测到 fatal error

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

这是最简单的程序,但我遇到了这个错误。我将所有信息从一个文件复制到另一个文件。 (坦率地说,我需要从多个文件中复制信息)

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

void CopyTo(FILE *x)
{
FILE *f0;
char *s=new char[100];
f0=fopen("file0.txt","wt+");
while(fgets(s,sizeof(s),x))
{
fwrite(s,1,strlen(s)+1,x);
}
fclose(f0);
};

int main()
{
FILE *fi;
fi=fopen("file1.txt","rt");
CopyTo(fi);
fclose(fi);
printf("finish");
getchar();
}

最佳答案

@a1ex07 已经解决了您当前代码的一些问题。但是,正如我在评论中所述,我认为您的代码可以通过一些更重要的更改来更有效地实现。

我认为你有以下问题:

  1. 您正在堆上分配缓冲区,但无法释放它。
  2. 您的缓冲区很小。使用更大的缓冲区可能会更有效。
  3. 使用 fgetsstrlen,面向 C 字符串的函数不适合逐字节复制操作。

我会这样写:

void CopyTo(FILE *x)
{
FILE *f0;
char buff[16*1024];//16kB buffer, stack allocated
size_t count;

f0=fopen("file0.txt", "wt+");
do
{
count = fread(&buff, 1, sizeof(buff), x);
if (!ferror(x))
{
fwrite(&buff, 1, count, f0);
}
} while (count == sizeof(buff));
fclose(f0);
};

请注意,此函数没有错误检查。你的也没有。如果您愿意,我会留给您添加。另外,我只是在脑海中编译了这个。如果有任何问题,我相信您可以解决。

关于c - Microsoft Visual Studio C 运行时库在 filecopy.exe 中检测到 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127063/

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