C - 多次读取文件描述符



我只是不明白我的代码出了什么问题,目标是使用按位异或加密一个文件,使用另一个文件作为密钥。它有效,问题是 while 只执行一次,这还不够。while 中的 if 语句用于密钥短于输入文件的情况。fd_in、fd_key 和 fd_out 是文件描述符。

while ((numOfBytes = read(fd_in, buf, 4096))!=0){
    numOfBytes_key=read(fd_key, buf_key, numOfBytes);
    if (numOfBytes>numOfBytes_key){
        lseek(fd_in, -(numOfBytes - numOfBytes_key), SEEK_CUR);
        lseek(fd_key, 0, SEEK_SET);
    }
    for (i = 0; i < numOfBytes_key; i++){
        buf_out[i] = buf[i] ^ buf_key[i];
    }
    write(fd_out, buf_out, numOfBytes_key); 
}

我想读取函数可能会把事情搞砸,因为从空的、不存在的 ect 文件中读取将返回 -1.因此,其余的计算将下降。尽量避免这种情况,包括如果火力:

while ((numOfBytes = read(fd_in, buf, 4096))!=0)
{
    numOfBytes_key=read(fd_key, buf_key, numOfBytes);
    if (numOfBytes>numOfBytes_key && (numOfBytes >= 0) &&(numOfBytes_key >= 0 ))
    {
        lseek(fd_in, -(numOfBytes - numOfBytes_key), SEEK_CUR);
        lseek(fd_key, 0, SEEK_SET);
    }
    for (i = 0; i < numOfBytes_key; i++){
        buf_out[i] = buf[i] ^ buf_key[i];
    }
    write(fd_out, buf_out, numOfBytes_key); 
}

相关内容

  • 没有找到相关文章

最新更新