while( rd = read(fd1, buf, 512) != 0)
{
len += rd;
if(readed < 0)
perror("read: ");
}
MAN页面说,read()返回读取字节数,但在我的情况下,此代码返回块数(取决于第三个参数)或迭代次数。例如,我有36个符号的文件,当所有符号通常读取时,此代码返回1,如果我将512更改为4,则返回9,依此类推。请更正我和此代码以返回使用512个大小的块读取的字节数
答案 0 :(得分:9)
rd = read(fd1, buf, 512) != 0
装置
rd = (read(fd1, buf, 512) != 0)
!=
的结果始终为0
或1
。
你可能意味着
while ((rd = read(fd1, buf, 512)) != 0)
答案 1 :(得分:1)
不正确使用括号, PL。像下面一样更改你的代码。希望它会给你正确的结果。
while( (rd = read(fd1, buf, 512)) != 0)
{
len += rd;
if(rd < 0)
perror("read: ");
}
答案 2 :(得分:1)
您是否尝试将此值设置为while循环条件之外? 如果没有更多括号,我认为在while条件下设置和测试值部分是不正确的。