私はこの内容でファイルを作成:abc
を、私は(別のものを提案しないでください、唯一read()
機能付き)読みたい、それがこのプログラムをコンソールに表示する:なぜprintfのデータをread()関数でバッファに格納していないのですか?
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main()
{
int fd;
char buf[3];
int size;
fd = open("test",O_RDONLY);
for (int i=0;i++;i<3){
size = read(fd,buf,1); // Version 2 used buf+i
printf("%c\n", buf[i]);
}
close(fd);
return 0;
}
私はバイトを1つずつ取り出すread関数を要求しています。chars
は1バイトサイズですが、それはうまくいくでしょう。しかし、実行時にコンソールに何も表示されません。
ヒント?
バイトをオフセットゼロ( 'buf [0]')に読み込むときに、それを超える要素にアクセスしようとするたびに、正しいことが分かりますか? –
あなたの 'read()'コールが* read * anything *の呼び出しを知っていますか?あなたは戻り値を無視しています。ファイルが正常に開かれたかどうかは分かりません。また、 'read()'は 'int'ではなく' ssize_t'を返します。 –
@DavidHoelzerはちょうど編集しました – juRioqs75