我希望能够使用read一次从一个文件中读取一个字符。我不能用fgetc。我试着寻找EOF,但我无法让它发挥作用。谢谢你的帮助。
char data[1024];
int infile = open(inFileName, O_RDONLY);
if(infile < 0 ) return 1;
int *c = '\0';
int i = 0;
for(i =0; i<30;++i){
read(infile, &c, 1);
printf("%c\n", c);
if(c == EOF){
break;
}
}
答案 0 :(得分:1)
read
不会返回EOF
。 read
通常返回读取的字节数。由于您打算只读取一个字节,因此您希望read
返回1
。当它返回0
时,表示它已到达终点。如果它返回-1
,则表示遇到错误,您应该检查errno
以获取更多信息。
您的计划还有其他问题。您对int *c
的使用是完全错误的。由于data
已经定义,因此即使您只打算使用缓冲区的第一个字节,也可以使用它来读取文件。在尝试打印输入之前,您应该检查是否确实获得了输入。
char data[1024];
int infile = open(inFileName, O_RDONLY);
if(infile < 0 ) {
perror(inFileName);
return 1;
}
int i = 0;
for(i =0; i<30;++i){
int r = read(infile, data, 1);
if(r <= 0){
if (r < 0) perror("read");
break;
}
printf("%c\n", data[0]);
}