我創建了一個快速程序來簡單地獲取文件的內容並將它們轉換爲輸出文件。我第一次運行我的程序時,我沒有遇到任何錯誤,看起來好像一切都會正常工作。但是,當我檢查我的輸出文件時,文件中沒有任何內容。我的第一個想法是,權限不正確,不允許寫作。當我在目錄中手動創建一個.txt文件並設置權限,然後運行程序時,它似乎工作(Ubuntu顯示文件的內容,副本),但我無法打開實際的文件。 希望有比我更有經驗的人可以幫助我。 那麼這裏是我的代碼:使用read(),write(),open()將文件的內容複製到另一個文件
int main(int argc, char* argv[]){
char buf[128];
int outft, inft,fileread;
// output file opened or created
if((outft = open(argv[1], O_CREAT | O_APPEND | O_RDWR))==-1){
perror("open");
}
// lets open the input file
inft = open(argv[2], O_RDONLY);
if(inft >0){ // there are things to read from the input
fileread = read(inft, buf, 160);
printf("%s\n", buf);
write(outft, buf, 160);
close(inft);
}
close(outft);
return 0;
}
你讀160個字節到128字節的緩衝區? – 2012-02-09 21:33:51
如果輸入文件的打開失敗,則不會報告。 'read()'和'write()'的返回值也被取消選中。 – hmjd 2012-02-09 21:34:39
@ paulsm4對權限是正確的 - 當使用'open_()'使用'O_CREAT'時,它們是必需的。如果我運行這段代碼(修復了緩衝區溢出),我會在新文件上獲得文件權限的隨機垃圾。 – Dmitri 2012-02-10 00:44:13