我创建了一个快速程序来简单地获取文件的内容并将它们转换为输出文件。我第一次运行我的程序时,我没有遇到任何错误,看起来好像一切都会正常工作。但是,当我检查我的输出文件时,文件中没有任何内容。我的第一个想法是,权限不正确,不允许写作。当我在目录中手动创建一个.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