gpt4 book ai didi

c - 空内存条目

转载 作者:行者123 更新时间:2023-11-30 15:02:16 24 4
gpt4 key购买 nike

我编写了这个小程序,它读取二进制形式的文件(本例中为 Databases.db)并将其内容复制到 cpydatabases.db 中...

当我在 fopen_s(&source, "Databases.db", "r"); 中运行调试器时,source总是NULL (调试时显示内存条目始终为 Null, 0x000000000000 <NULL> )。

该程序在 Visual Studio 2015 中运行。

#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include "dirent.h"
#include <string.h>
#include <sys/stat.h>
#include <stdlib.h>

#define BUFFSIZE 2048
char ch, *readbuf;
int nread, nwrit;
FILE *source, *target;

int main()
{
int returnv;
fopen_s(&source, "Databases.db", "r");

if ( source !== NULL)
{
fclose(source);
return (EXIT_FAILURE);
}
fopen_s(&target,"cpydatabases.db", "w");
//check again
if (target == NULL)
{
fclose(target);
return(EXIT_FAILURE);
}
//setting the char that reads the binary
readbuf = (char *)malloc(BUFFSIZE* sizeof(char));

if (readbuf == NULL)
{
fclose(source);
fclose(target);
return(EXIT_FAILURE);
}

while (1)
{
nread = fread((void *)readbuf, sizeof(char), BUFFSIZE, source) ;
// fwrite((void *)readbuf, sizeof(char), nread, target);
nwrit = fwrite((void *)readbuf, sizeof(char), nread, target);
if (nwrit < nread)
{
returnv = (EXIT_FAILURE);
}
if (nread <= BUFFSIZE)
{
returnv = (EXIT_SUCCESS);
break;
}
}

fclose(source);
fclose(target);

return 0;
}

最佳答案

这对我有用。您应该将 Databases.db 文件与 source.cpp 文件放在同一文件夹中,或者使用绝对路径,例如“C:/Databases”。无论如何,这段代码对我有用:

#define BUFFSIZE 2048
char ch, source_file[50], target_file[50], *readbuf;
int nread, nwrit;

FILE *source, *target;
int main()
{

int returnv;
fopen_s(&source, "Databases.db", "r");

if (source == NULL)
{
//fclose(source);
return (EXIT_FAILURE);
}
fopen_s(&target, "cpydatabases.db", "w");
//check again
if (target == NULL)
{
fclose(target);
return(EXIT_FAILURE);
}

关于c - 空内存条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41117290/

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