【发布时间】:2020-06-29 13:56:48
【问题描述】:
我想使用 gzgetc 逐个字符地读取文件的整行,并在遇到换行符时停止。我知道有一个功能可以抓取整条线,但我想先尝试这样做。我试过了:
Int c;
do {
c = gzgetc((gzFile) fp);
cout << c;
} while (c != '\n');
结果是一个无限循环。我尝试在 c 之前添加 (char),结果仍然相同。我究竟做错了什么?我试图读取的数据文件以 base64 编码,我想读取以空格分隔的每个令牌。有些行是可变长度的,混合了编码和未编码的数据,我设置了一个算法,我只需要知道如何在换行处停止。
【问题讨论】:
-
什么是
fp...? -
文件描述符
-
你是怎么得到的?
-
不应该
fp已经是gzFile(由gzopen返回)吗?为什么需要投射它?请注意,gzgetc在错误或文件结束时返回 -1,因此您应该检查一下。