具有cp命令功能的C程序
我创建了这个程序,它应该复制一个文件,就像UNIX中的cp命令一样,只是我的代码不带参数复制。我已经检查了我的程序好几次了,都没能找出问题所在。它编译无误,运行无误,但在我运行程序后,输出文件中没有任何文本。系统调用具有cp命令功能的C程序,c,unix,cp,C,Unix,Cp,我创建了这个程序,它应该复制一个文件,就像UNIX中的cp命令一样,只是我的代码不带参数复制。我已经检查了我的程序好几次了,都没能找出问题所在。它编译无误,运行无误,但在我运行程序后,输出文件中没有任何文本。系统调用open()返回一个文件描述符,该描述符可能不是1,因此终止条件 while(infile==1){ 这完全是假的。您应该测试read()调用read是否有任何输入(返回值是读取的字节数,当到达文件末尾时为零)。请阅读阅读手册页。。。双关语:-) 更重要的是,如果(rr=1)是一
open()
返回一个文件描述符,该描述符可能不是1,因此终止条件
while(infile==1){
这完全是假的。您应该测试read()
调用read是否有任何输入(返回值是读取的字节数,当到达文件末尾时为零)。请阅读阅读手册页。。。双关语:-)
更重要的是,如果(rr=1)
是一个始终为真的赋值。您应该使用==
进行比较
哦,exit(-1)/return(-1)是错误的(至少在Unix下,返回值是从0到127)。程序通过从
返回1或EXIT\u failure
来表示失败感谢您的简短回复。我将显示上面的编辑,它似乎正在工作!除了语法错误之外,声称从文件中读取1字节表示出现致命错误的想法是完全错误的。1字节文件可以存在,但您的程序将无法处理它们。我将while循环更改为:while(infle!=-1)。我将读写的if()语句更改为if(rr==0){exit(0);}while(infle!=-1)
将永远循环。迭代文件数据时,需要测试read()而不是open()的返回值。