2

整数をファイルに書き込むときに問題が発生し続ける理由がわかりません。

コードは次のとおりです。

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <string.h>

int main (int argc, char* argv[]) {


  int fd, w;
  int num=80;

  fd=open ("file3.txt", O_CREAT|O_WRONLY, 0777);

  if (fd>0) {

    w=write (fd, &num, sizeof (int));

        if (w==-1) {

          printf ("Writing Error \n");
          return EXIT_FAILURE;

    }

  }

  close (fd);
  return EXIT_SUCCESS;

}

誰がそれが何であるか知っていますか?

どうもありがとう...

4

2 に答える 2

7

asciiではなく、バイナリ値をファイルに書き込んでいます。ファイルに ascii が必要な場合はsprintf、最初にcharバッファーに入れ、次にwritechar バッファーに入れる必要があります。fopenまたは、代わりにopenを使用してファイルを開きますfprintf

psブロックclose(fd)内に必要です。if (fd > 0) {また、技術的に唯一のエラーリターンはopenです-1。他のすべての値 (正、ゼロ、負) は成功です。

于 2012-09-27T23:24:54.887 に答える
0

あなたのコメントから、それは 100% 正しく動作しています:Pたまたま 10 進数の 80 です。

write()小数表現ではなく整数のバイトを出力しています。

あなたが期待しているように見えるものを取得する簡単な方法として、fopenandを見たいと思うかもしれません。fprintf

于 2012-09-27T23:26:23.593 に答える