新しいファイルに書き込むために、私は次のことを行います:
// some code
...
pfd[i][0] = open(argv[j+1],O_CREAT|O_WRONLY,0600);
質問:
との使用に違いはあります
open
かfopen
?モード
open
で既存のファイルを開くためにどのように使用できますか?append
open
POSIXシステム用です。他のシステムへの移植はできません。fopen
はC標準の一部であるため、すべてのC実装で機能します。open
を返すファイル記述子をfopen
返す違いを無視していますFILE *
。
O_APPEND
追加モードで開くために使用します。
open
移植性のないPOSIX関数であり、fopen
移植性のある標準のC関数であるということです。O_APPEND
に呼び出すときに指定します。open
1)はい。違いがあります:バッファ付きまたはバッファなしのI/O。
open()
RAWファイルハンドルを提供します(プログラムとファイルシステム内のファイルの間にバッファはありません)。
fopen()
ストリームバッファモードでファイルを操作する権限を与えます。たとえば、データを1行ずつ(\ 0)読み取り/書き込みできます。
、、、、のような関数を使用するとfprintf()
、
大きな違いがわかります。fscanf()
fgets()
fflush()
ps:fopen()
より良くはありませんopen()
。それらは異なるものです。ストリームバッファ(fopen)が必要な場合もあれば、バイトごとの作業(open)が必要な場合もあります。
ストリームに関する優れたリファレンスは次のとおりです。http ://www.cs.cf.ac.uk/Dave/C/node18.html#SECTION001820000000000000000
2)追加モードで開くには、O_APPEND
フラグを追加します。
open(argv[j+1],O_CREAT|O_APPEND|O_WRONLY,0600);