我有一个小程序,可以在文件中搜索字符串。
这个字符串的末尾有一个可变部分,并且总是在前面加一个字节来表示大小。
例如,我们将在“aaaaa.http://www.example.combbbb”中查找“http://”(ASCII代码“.”是0x17。
假设我们已经打开了文件。
要执行的代码是:
while(car != EOF){
car = fgetc(file[ii]); // we get everything in the file
lastBuffStart=ftell(file[ii]);
ij=1;
buffer[0]=car; // we start editing the buffer
printf("\n%d (%c) - %d (%c) ",car,car,base[0],base[0]);
while(ij<(buffsize-1)){
buffer[ij]=fgetc(file[ii]);
printf("\n | %d (%c) - %d (%c) ",buffer[ij],buffer[ij],base[ij],base[ij]);
ij++;
}
fseek(file[ii],lastBuffStart,0); // we get back to the old position before the buffer continues
if(strcmp(buffer,base)==0){ // we compare
byteSize = (ftell(file[ii])-1); // we get the position of the size byte
printf("\nFound : 0x%x\n",byteSize);
}
}
我们读取了所有文件,并将下一个字符放入缓冲区,以便与基(http://)进行比较。
我的问题是,如果删除printf(“\n |%d(%c)-%d(%c)”,buffer[ij],buffer[ij],base[ij],base[ij]);则找不到任何内容。。。
我真的看不出我做错了什么。
你能帮助我吗?
提前谢谢。
最佳答案
你忘了空终止缓冲区。或者,应该使用memcmp而不是strcmp。另外,如果使用fread而不是while循环,代码会更清晰。