我有一个文件bisht.txt和pranav.txt。我想将内容从bisht.txt复制到pranav.txt。 read系统调用工作正常,因为我在它之后打印了str,它打印了文件的确切内容,但是当我检查目标文件pranav.txt的内容时,会写入一些中文但是没有。字符与no相同。写系统调用中提到的字节数。请帮忙!
#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);
}
答案 0 :(得分:2)
您没有使用read的返回来写入字节。 read
函数返回实际读取的字节数:
int cnt;
cnt=read(rdes,&str,sizeof(str));
if(cnt>0) { write(wdes,&str,cnt); }
从技术上讲,写入可能会返回一个短计数,因此您应该在循环中写入所有字节,或者-1
表示错误。虽然对于本地存储设备,可能永远不会发生短写。