理解C中的read()操作?
我有以下代码:理解C中的read()操作?,c,file,C,File,我有以下代码: int fd = open(filename, O_RDONLY); char buf[len]; size_t count =0; while (count < len){ size_t_nbytes = read (fd, buf+len, len-count); if(nbytes==0){ len=count; break; } count +=nbytes; } int fd=open(仅文件名
int fd = open(filename, O_RDONLY);
char buf[len];
size_t count =0;
while (count < len){
size_t_nbytes = read (fd, buf+len, len-count);
if(nbytes==0){
len=count;
break;
}
count +=nbytes;
}
int fd=open(仅文件名);
char-buf[len];
大小\u t计数=0;
while(计数
我不理解的部分是read()函数中的len计数。len count是我要读取的块的大小。在第一个循环中是len。所有我想读的东西。我可以用len替换它吗?无论如何,循环应该只循环一次?谢谢您的帮助。虽然它“可能”应该循环一次,但不要打赌,最好直接处理它:
int fd = open(filename, O_RDONLY);
char buf[len];
size_t count =0;
while (count < len){
size_t_nbytes = read (fd, buf+count, len-count);
// ^^ use count instead of len
if(nbytes==0){
break;
} else if (nbytes == -1) {
perror("read");
break;
}
count +=nbytes;
}
如果碰巧读取了50个字节,则下一轮为
read (fd, buf+50, 100-50);
这正是您想要的。因此,即使文件比len长,并且我想读取一个大小为len的块,也不能保证read将实际读取所有len字节,但可能只有size\u t\n字节
read (fd, buf+50, 100-50);