使用 read() 一次从文件中读取一个字符

using read() to read one char at a time from a file

我希望能够使用 read 从文件中一次读取一个字符。我不能使用 fgetc。我试着寻找 EOF,但无法正常工作。谢谢你的帮助。

char data[1024];
int infile = open(inFileName, O_RDONLY);
if(infile < 0 ) return 1;

int *c = '[=10=]';
int i = 0;
for(i =0; i<30;++i){
   read(infile, &c, 1);
   printf("%c\n", c);
   if(c == EOF){
       break;
     }
}
如果没有更多输入,

read 不会 return EOFread 通常 returns 读取的字节数。由于您打算只读取一个字节,因此您期望 read 到 return 1。当它returns 0时,表示它已经到达终点。如果它 returns -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]);
}