以下代码(稍微)有效。我希望它从文件中读取一个字符并返回该字符,但它的问题是它一遍又一遍地读取相同的字符。当我第二次调用它时,我希望它记住最后一个字符,然后在文件中读取下一个字符。
我是编码的新手。请任何帮助将不胜感激。
#include "./libft/libft.h"
#include <stdio.h>
# define LINE 20
char getc_fd(int fd)
{
int ret;
char c;
if ((ret = read(fd, &c, 1) != 0))
;
return (c);
}
int main(void)
{
int fd;
char buf[LINE + 1];
fd = open("./file.txt", O_RDONLY);
if (fd == -1)
return (-1);
buf[0] = getc_fd(fd);
/*buf[LINE] = 0;*/
printf("%s", buf);
return (0);
}
答案 0 :(得分:1)
Oups。每次打开文件进行读取时,文件指针都会定位在文件的开头。并且您无法通过程序的不同调用传递打开的文件。
我认为现在是时候在你的主要学习循环:
int main(void)
{
int fd;
char buf[LINE + 1];
fd = open("./file.txt", O_RDONLY);
if (fd == -1)
return (-1);
for (int i=0; i<LINE; i+++) {
buf[i] = getc_fd(fd);
}
buf[LINE] = 0;
printf("%s", buf);
return (0);
}
下一课应该是:getc_fd
如何向其来电者报告错误或文件结束条件? (提示:查看getc
定义)