0

write()関数を使って非char*を書くことは可能ですか?を印刷する必要がありますunsigned longが、その方法がわかりません。つまり、unsigned longinbufパラメーターを渡します。

4

1 に答える 1

1

移植性が高いため、利用可能な場合は標準のC関数を使用することをお勧めします。可能で、テキストとして出力したい場合は、fprintfではなくを確認する必要がありますfwrite。前者はそれをフォーマットし、後者は生のメモリブロックを書き込むためのものです。

例えば:

int val = 42;
fprintf (fh, "%d", val); // should check return value.

テキスト「42」を出力します。

バイナリ表現を書き出す場合fwrite、そのための手段です。

int val = 42;
fwrite (&val, sizeof (val), 1, fh); // should check return value.

これにより、バイナリ表現が書き出され、バイト、、、がファイル0に書き込まれます(もちろん、変数のメモリレイアウトによって異なりますが、実装によって異なる場合があります)。0042int


これは、記述子ではなくファイルハンドルを使用できる場合です。そうでない場合、f*関数は適切ではありません。あなたがより低いレベルで働きたいと思う正当な理由があるかもしれません。

したがって、の記述子しかない場合は、write最初に変数を次のような文字列にフォーマットする必要があります。

char buff[100];
sprintf (buff, "%d", val);
write (fd, buff, strlen (buff)); // should check return value.

それはあなたがそれをテキストとして欲しいと仮定しています。fwriteバイナリ値として必要な場合は、上記の:で行った方法と似ています。

write (fd, &val, sizeof (val)); // should check return value.
于 2012-09-04T00:52:05.343 に答える