2012年7月23日月曜日

【C言語】システムコール関数でファイル入出力(2)

前回に引き続き、システムコール関数でのファイル入出力のメモ。

【C言語】システムコール関数でファイル入出力(1)


write()関数とread()関数

writeの例.


#include<stdio.h>
#include<hogehoge.h>

int main(void){

int fd;
char filename = "test.txt";
char message = "ここにファイル出力したい文字列を書く";

//  ファイルオープン
fd = open(filename, O_WRONLY);

//  ファイル書き込み
write(fd, message, strlen(message)+1);

//  ファイルクローズ
close(fd);

return 0;

}


write関数

fd - 対象ファイルのファイルディスクリプタ
message - 書き込む文字列
strlen(message)+1 - 書き込み文字列の長さ




readの例.


#include<stdio.h>
#include<hogehoge.h>

#define BUF_LEN 1024

int main(void){

int fd;
char filename = "test.txt";
char buf[BUF_LEN];

//  ファイルオープン
fd = open(filename, O_RDONLY);

//  ファイル書き込み
while ( ( n =read(fd, buf, BUF_LEN) ) > 0 ){
     printf("%s", buf);

}

//  ファイルクローズ
close(fd);

return 0;

}




read関数
fd - ファイルディスクリプタ
buf - 読み込んだ文字列を格納する箱
BUF_LEN - 一回で読み込む文字列の長さ(バイト数)



readの返り値として、「読み込んだバイト数」が返ってきます。
つまりこのwhile文は、まだ読み込む文字がある場合はずっとループする、ということ。
BUF_LENで指定したサイズ(今回は1024)ずつ読み込み、表示します。





0 件のコメント:

コメントを投稿