2016-05-17 9 views
0

Cの基礎を学びようとしています。私はファイルに配列を書いています。私はファイルにデータを書き込んで、それをまた読み返すことに成功しています。しかし、データはバイナリ形式でファイルに書き込まれますが、これは人間が読める形式ではありません。 ファイルにデータを書き込んで人間が判読可能な形式にするにはどうすればよいですか。Cでファイルに配列を書き込む場合、ファイルは人間が判読可能な形式でなければなりません。

#include<stdio.h> 

    typedef struct array 
    { 
     int n; 
     int arr[100]; 
    } array_t; 

    void print_array(array_t e) 
    { 
     printf("%s\n", __FUNCTION__); 
     int i = 0; 
     for(i = 0; i < e.n; i++) 
      printf("%d\n", e.arr[i]); 
    } 

    int main() 
    { 
     FILE *f1; 
     array_t e, f; 
     int i; 

     printf("Enter Array Size:\n"); 

     scanf("%d",&e.n); 

     for(i = 0; i < e.n; i++) 
     { 
      int temp; 
      printf("Enter %dth element\n", i+1); 
      scanf("%d",&temp); 
      e.arr[i] = temp; 
     } 

     print_array(e); 

     f1 = fopen("one.txt", "wb+"); 
     int ret = fwrite(e.arr, sizeof(int), e.n, f1); 

     fclose(f1); 

     f1 = fopen("one.txt", "rb"); 
     f.n = e.n; 

     for(i = 0; i < e.n; i++) { 
      int temp = 0; 
      fread(&temp, sizeof(int), 1, f1); 
      f.arr[i] = temp; 
     } 

     printf("This is read array\n"); 
     print_array(f); 

     return 0; 
    } 
+1

整数を文字列に変換して文字列に変換します。 – trojanfoe

+0

配列値ドメインの一部ではない区切り記号が必要です。 – jboockmann

+0

私はfwriteがあなたが不平を言っている振る舞いをしていると考えています。 fprintfを見て、あなたが探しているものかもしれません。 (http://www.cplusplus.com/reference/cstdio/fprintf/) –

答えて

0

freadfwriteは、バイナリストリームの入力/出力機能です。実際には、書式設定されたデータを出力ストリームに書き込むための正しいツールではありません。

fprintffscanfをご覧ください。彼らはあなたが探しているものに近づくはずです。この場合

0

「人間が読める」はASCIIを意味し、あなたがあなたのファイルに9に文字 0を持たせたい場合は、ます。0x39に番号 0x30のを記述する必要がありそう(または文字「0」 'と - >fscanffwrite - >fprintf

f1 = fopen("one.txt", "w"); 

そして、すべてfread:9' )

1

あなたのコードは次のようにする必要があります。

ループ内のこれらの操作(fprintf

関連する問題