[英]Why doesn't printf display data put in a buffer with the read() function?
我创建了一个具有以下内容的文件: abc
并且我想读取(仅使用read()
函数,请不要建议另一个文件)并将其显示在使用此程序的控制台上:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main()
{
int fd;
char buf[3];
int size;
fd = open("test",O_RDONLY);
for (int i=0;i++;i<3){
size = read(fd,buf,1); // Version 2 used buf+i
printf("%c\n", buf[i]);
}
close(fd);
return 0;
}
我要求read函数一个个地检索字节,而chars
是一个字节的大小,尽管它可以工作。 但是执行时控制台上没有任何显示。
有什么线索吗?
每次read
调用都会将字符放在buf
的开头,但是您并不总是打印出buf
那一部分。
当前,您在每次read
上读入buf
数组的第一个条目。 替换size = read(fd,buf,1);
size = read(fd,&buf[i],1);
,它应该可以正常工作。
您的for
循环条件有点倒转。 您需要交换条件的第二部分和第三部分。 你有:
for (int i=0;i++;i<3)
但是,由于i++
在第一次迭代期间的值为0
,因此由于条件为假,因此永远不会进入循环。
它可能应该是:
for (int i=0; i<3; i++)
但是我建议您使用read()
的返回值来确定循环条件(如果您只想读取3个字节,则可以使用计数器)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.