Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有cp命令功能的C程序_C_Unix_Cp - Fatal编程技术网

具有cp命令功能的C程序

具有cp命令功能的C程序,c,unix,cp,C,Unix,Cp,我创建了这个程序,它应该复制一个文件,就像UNIX中的cp命令一样,只是我的代码不带参数复制。我已经检查了我的程序好几次了,都没能找出问题所在。它编译无误,运行无误,但在我运行程序后,输出文件中没有任何文本。系统调用open()返回一个文件描述符,该描述符可能不是1,因此终止条件 while(infile==1){ 这完全是假的。您应该测试read()调用read是否有任何输入(返回值是读取的字节数,当到达文件末尾时为零)。请阅读阅读手册页。。。双关语:-) 更重要的是,如果(rr=1)是一

我创建了这个程序,它应该复制一个文件,就像UNIX中的cp命令一样,只是我的代码不带参数复制。我已经检查了我的程序好几次了,都没能找出问题所在。它编译无误,运行无误,但在我运行程序后,输出文件中没有任何文本。

系统调用
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()的返回值。