1

putw()、、、fprintf()およびを含むCで使用可能なファイル処理関数のいずれかを使用して、整数値13をファイルに書き込むことができませんfwrite()

#include <stdio.h>
#include <conio.h>

void main()
{
  int i;
  int arr[]={10, 11, 12, 13, 14, 15};
  FILE *fp;
  if (fp = fopen("test", "w")) {
        for(i=0; i<6; i++) {
            putw(arr[i], fp);
        }
  }
  fclose(fp);
  fp = fopen("test", "r");
  while ((i=getw(fp))!= EOF) {
        printf("%d, ",i);
  }
  fclose(fp);
  getch();
}

出力を与える

10, 11, 12, 3584, 3840,

および変更された配列

int arr[]={13, 11, 12, 13, 14, 15};

出力を与える

2816, 3072, 0, 14, 15, 

値13に遭遇した後、出力が期待どおりではないことがわかります。誰かがこの問題で私を助けることができますか?

4

2 に答える 2

5

CR/LF行終了処理のようです。「b」モード修飾子を使用して、ファイルをバイナリモードで開きます。

  if (fp = fopen("test", "wb")) {
  fp = fopen("test", "rb");
于 2012-11-01T16:52:14.147 に答える
0

それは確かにCR/LF処理のようなにおいがします。この理由は、13がCRのASCIIであるためです...私はそれをバイナリファイルとして扱い、行末の問題をあなたに任せます!

于 2012-11-01T17:01:25.673 に答える