[英]I/O using system calls
我有一個文件bisht.txt和pranav.txt。 我想將內容從bisht.txt復制到pranav.txt。 讀取系統調用正常工作,因為我緊隨其后打印了str,該字符串打印了文件的確切內容,但是當我檢查目標文件pranav.txt的內容時,會寫一些中文,但是沒有。 字符數與否相同。 寫系統調用中提到的字節數。 請幫忙!
#include<unistd.h>
#include<fcntl.h>
#include<stdio.h>
main()
{
//FILE Descriptor rdes and wdes
/*Open file pranav.txt in write-only mode,
O_CREAT creates file if it does not exist and open bisht.txt in read-only mode*/
int rdes = open("bisht.txt",O_RDONLY);
int wdes = open("pranav.txt", O_CREAT | O_WRONLY);
char str[10];
if(wdes!=-1 && rdes!=-1)
{
//To read
read(rdes,&str,10);
//To write on file
write(wdes,&str,10);
}
else
{
//Print "error" on screen
write(2,"File_Opening_Error",18);
}
close(wdes);
close(rdes);
}
您沒有使用讀取的返回值來寫入字節。 read
函數返回實際讀取的字節數:
int cnt;
cnt=read(rdes,&str,sizeof(str));
if(cnt>0) { write(wdes,&str,cnt); }
從技術上講,該寫操作可能返回一個較短的計數,因此您應該循環執行直到寫完所有字節為止,或者為-1
表示錯誤。 盡管對於本地存儲設備,短寫可能永遠不會發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.