1

我有这个从infile到outfile的复制代码,问题是在outfile的末尾添加了很多垃圾

ssize_t nread;
int bufsize=512;
char buffer[bufsize];

while ( (nread=read(infile, buffer, bufsize)>0))
{
    if( write(outfile, buffer, bufsize)<nread ) 
    {
        close(outfile); close(infile); printf("error in write loop !\n\n");
        return (-4);
    }
}
if( nread == -1) {
  printf ("error on last read\n"); return (-5);
}//error on last read /

我该怎么做才能解决这个问题?

4

1 回答 1

5
while ( (nread=read(infile, buffer, bufsize)>0))

应该:

while ( (nread=read(infile, buffer, bufsize)) >0 )

as> 与 相比具有更高的优先级=

write(outfile, buffer, bufsize)

你总是在写bufsize字节数。但是在读取操作中不需要读取那么多字节。这可能发生在复制的最后一次迭代中。要解决此问题,您应该写入nread字节数。

于 2012-10-22T02:19:13.103 回答