2016-07-25 4 views
-2

ich sehr einfach Dump Speicherprogramm in c Verwendung fwrite() Funktion zu machen versucht, aber es Fehler aufgetreten ...Dump Speicher in c Verwendung fwrite()

Dies ist mein Code, erhalten dumpCode() Funktion Startadresse, Endadresse, und Name.

Dann in for Schleife Ich möchte Speicher ablegen und Datei machen.

void dumpCode(char* start, char* end, char* subject ) 
{ 
    FILE *fp; 
    char *i; 
    char fileName[100]; 

    // make file name 
    sprintf(fileName, "/storage/emulated/0/test/%s-%s.txt", start,end); 

    fp = fopen(fileName, "wb"); 

    for (i = start; i <= end ; i++) 
     fwrite(start, 1,10*sizeof(unsigned long long),fp); 

    fclose(fp); 
} 

Ich denke, es ist sehr einfach, aber ich kann keinen Fehler finden. Was ist das Problem in meinem Code?

+2

'Ich versuche, sehr einfache Dump Speicherprogramm in c verwenden fwrite() -Funktion, aber es ist aufgetreten Fehler ...' Aber was ist Fehler? Lesen Sie zuerst http://www.tutorialspoint.com/c_standard_library/c_function_fwrite.htm –

+0

Überprüfen Sie, ob 'fp'' NULL' nach 'fopen' ist. Dies passiert, wenn die Datei aus irgendeinem Grund nicht geöffnet/erstellt werden kann. –

+1

Wer sagt, dass Sie einfach auf jede Adresse zugreifen können? Es ist gut möglich, dass Sie keine Zugriffsverletzung/segfault erhalten können. Über welchen Fehler redest du? –

Antwort

0

sollten Sie überprüfen die fp ist NULL oder nicht nach fopen .Nur wenn das ok fopen, können Sie fwrite verwenden, um Daten zu file.Now zu schreiben, Sie wissen nicht, den Fehler, können Sie die errno drucken, was zu sehen Fehler aufgetreten. Auch ich merke, Sie diese Datei mit wb, es bedeutet, wenn diese Datei existiert, löschen Sie es und neu erstellen Sie es dann Daten schreiben.

#include<errno.h> 
void dumpCode(char* start, char* end, char* subject ) 
{ 
    FILE *fp; 
    char *i; 
    char fileName[100]; 
    int count = 0; 
    // make file name 
    sprintf(fileName, "/storage/emulated/0/test/%s-%s.txt", start,end); 

    fp = fopen(fileName, "wb"); 
    if(NULL == fp){ 
     printf("fopen error,errno is %d\n",errno); 
    }else{ 
     for(i = start; i <= end ; i++){ 
      if(fwrite(start, 1,10*sizeof(unsigned long long),fp) == 0) 
       printf("fwrite error,errno is %d\n",errno); 
     } 
     fclose(fp); 
    } 
} 
1

Es ist möglich, dass Sie auf eine Datei zugreifen möchten, die nicht existiert. Um sicherzustellen, dass Sie diesen Fehler nicht machen, müssen Sie den Rückgabewert von fopen überprüfen. Wenn der Rückgabewert NULL ist, bedeutet dies, dass Sie keinen Zugriff auf eine gültige oder vorhandene Datei versuchen.

Hier ist, was Sie tun sollten:

void dumpCode(char* start, char* end, char* subject ) 
{ 
    FILE *fp; 
    char *i; 
    char fileName[100]; 

    // make file name 
    sprintf(fileName, "/storage/emulated/0/test/%s-%s.txt", start,end); 

    if ((fp = fopen(fileName, "wb")) == NULL) 
     printf("Error: Could not open '%s'\n", fileName); 

    for (i = start; i <= end ; i++) 
     fwrite(start, 1,10*sizeof(unsigned long long),fp); 

    fclose(fp); 
} 

Hoffnung, das hilft.