我的代碼存在一些問題,代碼沒有編譯,但是當我測試代碼時,我發現如果簽名位於文件末尾(或文件中間),該程序不起作用。文件簽名C
int normalScan(char * fileName, char * sign){
int toReturn = 0;
FILE * toScan = fopen(fileName,"rb");
FILE * signature = fopen(sign, "rb");
char * buffer = NULL;
char * secondBuffer = NULL;
int size = 0;
int secondSize = 0;
int elements = 0;
int i = 0;
fseek(signature, 0, SEEK_END);
size = ftell(signature);
rewind(signature);
fseek(toScan, 0, SEEK_END);
secondSize = ftell(toScan);
rewind(toScan);
buffer = malloc(sizeof(char)*size);
elements = fread(buffer, 1, size, signature);
secondBuffer = malloc(sizeof(char)*size);
elements = fread(secondBuffer, 1, size, toScan);
if (strcmp(secondBuffer, buffer) == 0){
toReturn = 1;
}
else{
while (fgetc(toScan) != EOF && fgetc(signature) != EOF){
rewind(signature);
fseek(toScan, -1, SEEK_CUR);
if (fgetc(toScan) == fgetc(signature)){
rewind(signature);
fseek(toScan, -1, SEEK_CUR);
elements = fread(secondBuffer, 1, size, toScan);
if (strcmp(secondBuffer, buffer) == 0){
toReturn = 1;
}
}
rewind(signature);
strncpy(secondBuffer, "", sizeof(secondBuffer));
}
}
free(secondBuffer);
fclose(toScan);
fclose(signature);
free(buffer);
return toReturn;
}
請看[爲什麼「while(!feof(file))」總是出錯?](http://stackoverflow.com/q/5431941/2173917) –
[不要將'malloc'的結果強制轉換爲C](http://stackoverflow.com/q/605845/995714) –
你可能想說幾句關於你的代碼打算做什麼的話。代碼本身並不是很清楚。它是否在文件中搜索已知的簽名? –