2016-07-25 3 views
-2

私はc使用fwrite()機能で非常に簡単なダンプメモリプログラムを作成しようとしているが、それはエラーが発生した...ダンプメモリ()

これは私のコードで、dumpCode()機能は、アドレス、終了アドレスを開始し得ます、名前。

次に、forループでメモリをダンプしてファイルを作成します。

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); 
} 

私は非常にシンプルだと思いますが、エラーが見つかりません。私のコードの問題は何ですか?

+2

'私はfwrite()関数を使って非常に単純なダンプメモリプログラムを作ろうとしましたが、エラーが発生しました... 'しかし、何がエラーですか?最初にhttp://www.tutorialspoint.com/c_standard_library/c_function_fwrite.htm –

+0

を読んでください。 'fopen'の後に' fp'が 'NULL'であることを確認してください。これは、何らかの理由でファイルを開く/作成できない場合に発生します。 –

+1

あなたは単に任意のアドレスにアクセスできると誰が言う?あなたはアクセス違反/セグメンテーションを取得することはできません。あなたが話しているエラーは何ですか? –

答えて

0

あなたはfpをチェックする必要がありますが、あなたがエラーを知らない、あなたは何を参照してerrnoを印刷することができ、fopenのOKならば、あなたはfile.Nowにデータを書き込むためにfwriteを使用することができますfopen .Only後NULLかではありませんエラーhanppened。 また、fopenwbとこのファイルが存在する場合は、削除して再作成してデータを書き込むことになります。

#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

存在しないファイルにアクセスしようとしている可能性があります。このミスをしていないことを確認するには、fopenの戻り値をチェックする必要があります。実際、戻り値がNULLの場合は、有効なファイルまたは既存のファイルにアクセスしようとしていないことを意味します。ここで

は、あなたが何をすべきかです:

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); 
} 

は、この情報がお役に立てば幸いです。