Linux 下使用zlib库的crc32函数问题
1.分段读取文件,一行一行的读
ifstream file;
file.open("./1.txt",ios::in);
char linechar[1024];
memset(linechar, 0, sizeof(linechar));
while (file.getline(linechar,sizeof(linechar)))
{
crc 1= crc32(crc1,(const Bytef*)context, strlen(linechar));
}
2.读取整个文件
string name = "1.txt“;
int len = getFileSize(filename);//获取文件大小
file.read(linechar,len);
crc2= crc32(crc2,(const Bytef*)linechar, len);
为什么2个crc(crc1 和crc2) 的值不一样,与在线转换CRC32代码的工具比较,其中读取整个文件的正确(crc2),分段读取的错误(crc1)。。。分段读取是根据ZLIB函数库说明文档改写的
补充:ifstream file;
file.open("./1.txt",ios::in);
char linechar[1024];
memset(linechar, 0, sizeof(linechar));
while (file.getline(linechar,sizeof(linechar)))
{
crc1= crc32(crc1,(const Bytef*)linechar, strlen(linechar));
}
修改crc32函数,改context为lianchar,输入错了
追问:crc32函数接力 用是在函数说明上看到的有例子,现在我去改一下,感谢~~
答案:不知道crc32这个函数还可以接力着用,
你仔细看看吧
getline + getline + ... 把内容读进缓冲区 跟一次性把所有内容读进缓冲区是一样的么。
getline 是不是去掉每行的\r\n啊?
其他::) 嘿嘿, 错误在于分行读时,getline 在每行后面多加了一个 '\0'
上一个:#include <stdio.h> int main() { int i=43; printf("%d\n",printf("%d",printf("%d",i)); return 1; }
下一个:2012年计算机二级C语言答案?