我有以下代码:
int copynFile(FILE * origin, FILE * destination, int nBytes) {
for(int i = 0; i < nBytes; i++){
if(feof(origin)!=0) return i;
int byte = getc(origin);
if(byte == EOF || putc(byte, destination)==EOF) return -1;
}
return nBytes;
}
我的意图是这个函数应该将nbytes从origin复制到destination。如果origin中的字节数小于nBytes,则它会返回实际复制到目标的字节数,如果发生错误则返回-1。
现在,我将返回-1行添加为只应在异常情况下发生的事情,但每次函数达到原点的EOF时它都会触发!
因此我相信if(feof(origin)!=0) return i;
没有完成检测文件结尾的工作。有什么问题?