поэтому у меня есть этот код для проверки файла CRC с именем map.spak и сравнить результат с моим указанным результатом CRC, который хранится в переменной «сравнить»
int main(int iArg, char *sArg[])
{
char sSourceFile[MAX_PATH];
memset(sSourceFile, 0, sizeof(sSourceFile));
CCRC32 crc32;
crc32.Initialize(); //Only have to do this once.
unsigned int iCRC = 0;
strcpy(sSourceFile, "map.spak");
int compare = 399857339;
ifstream checkfile(sSourceFile);
if (checkfile){
cout << "Checking file " << sSourceFile << "..." << endl;
crc32.FileCRC(sSourceFile, &iCRC);
if(iCRC == compare){
cout << "File " << sSourceFile << " complete!\nCRC Result: " << iCRC << endl;
}else{
cout << "File " << sSourceFile << " incomplete!\nCRC Result: " << iCRC << endl;
}
}else{
cout << "File not found!" << endl;
}
system("pause");
return 0;
}
и теперь я хочу сделать этот код для нескольких файлов
скажем, список имен файлов, хранящихся в filelist.txt
структура filelist.txt:
id|filename|specified crc
1|map.spak|399857339
2|monster.spak|274394072
как сделать проверку CRC, цикл для каждого имени файла
я не очень хорош в C ++, я знаю только один алгоритм, потому что я знаю PHP
С ++ слишком сложный
это полный исходный код CRC Исходный код
или пастин
TestApp.cpp ссылка на сайт
Я сделал несколько изменений в вашем коде. Я удалил защитные заголовки, так как мы используем их только в заголовочных файлах. Старый набор memset был заменен операцией со строками. Я подозреваю, что вам нужно пройти char*
к объекту CCRC32, следовательно, sSourceFile по-прежнему const char*
, Я скомпилировал код, кроме частей с CCRC32.
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include "../CCRC32.H"
int main(int iArg, char *sArg[])
{
std::vector<std::string> filenames;
// TODO - populate filesnames (paths?)
CCRC32 crc32;
crc32.Initialize(); //Only have to do this once.
for (unsigned int i = 0; i < filenames.size(); i++) {
const char* sSourceFile = filenames[i].c_str();
unsigned int iCRC = 0;
int compare = 399857339; // TODO - you need to change this since you are checking several files
std::ifstream checkfile(sSourceFile);
if (checkfile) {
std::cout << "Checking file " << sSourceFile << "..." << std::endl;
crc32.FileCRC(sSourceFile, &iCRC);
if(iCRC == compare){
std::cout << "File " << sSourceFile << " complete!\nCRC Result: " << iCRC << std::endl;
} else {
std::cout << "File " << sSourceFile << " incomplete!\nCRC Result: " << iCRC << std::endl;
}
} else {
std::cout << "File tidak ditemukan!" << std::endl;
}
}
return 0;
}
Других решений пока нет …