ich dieses kleine Programm geschrieben, das eine Datei in binärer Form (Databases.db in diesem Beispiel) liest und kopiert seinen Inhalt in der cpydatabases.db ...NULL Erinnerungen Eintrag
Wenn ich den Debugger im fopen_s(&source, "Databases.db", "r");
laufen , die source
ist immer NULL
(während das Debuggen zeigt, dass der Speichereintrag immer Null, 0x000000000000 <NULL>
ist).
Dieses Programm läuft in 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;
}
Was ist die Rückkehr von 'fopen_s' Funktionsaufrufen? Wenn 'source'' NULL' ist, müssen Sie 'close' nicht. – purplepsycho
Überprüfen Sie das msdn-Beispiel für den Rückgabewert von fopen_s https://msdn.microsoft.com/en-us/library/z5hh6ee9.aspx – izlin
Sind die Dateien im selben Ordner wie die ausführbare Datei? – Bauss