2016-05-02 8 views
-1

これを実行した後、stdoutに表示されるのは "buff:"だけです。実際に標準出力に出力されます。私は「いくつかのテキストはバフ」よりコメントを削除する場合はここで は、コードread()操作後の空のバッファ

int main(int argc, char *argv[]) { 
int fds [2]; 
char buf [11]; 
fds[1] = open("myfile.txt", O_CREAT | O_RDWR,0700); 
write(fds[1], "some text\n",10); 
//close(fds[1]); 
//fds[1] = open("myfile.txt", O_RDONLY); 
read(fds[1], buf, 10); 
buf[10] = '\0'; 
printf("buff : %s\n", buf); 
close(fds[1]); 

return 0; 
} 

です。どうして?

+0

これは特に言語ですか? –

+0

cタグを追加して、私はそのCと思う – piyushj

答えて

0

コメントアウトした行は、書かれたテキストがの後にちょうど点のファイルから読み取られているため、ファイルには何もありません。

これらの行のコメントを外すときは、ファイルを閉じてから再度開いて、ファイルの先頭から読み込んだときに書き込んだテキストを読み込むようにします。

+0

ヒントをありがとう。私は読書しているポイントを再配置するためにpread + lseekのようなものを使わなければならないと思う。 aight? –

+0

または、この方法でファイルを使用する必要性を再検討してください。実際のアプリケーションについて何も知らないので、私はそれに話すことができませんでした。 –

+0

@FilippoBosco - あなたのコードが成功のための単一の戻り値をチェックしないという事実もあります。コードが実行されていない結果をチェックしていた場合は、すぐに問題に気づいたでしょう。 –

関連する問題