我不明白为什么我的 while 循环不起作用。没有它,代码也能正常工作……代码的目的是在 bin 文件中查找秘密消息。所以我得到了查找字母的代码,但现在……
我不明白为什么我的 while 循环不起作用。没有它,代码也能正常工作……代码的目的是在 bin 文件中查找秘密消息。所以我得到了查找字母的代码,但现在当我尝试让它循环到文件末尾时,它不起作用。我是新手。我做错了什么?
main(){
FILE* message;
int i, start;
long int size;
char keep[1];
message = fopen("c:\\myFiles\\Message.dat", "rb");
if(message == NULL){
printf("There was a problem reading the file. \n");
exit(-1);
}
//the first 4 bytes contain an int that tells how many subsequent bytes you can throw away
fread(&start, sizeof(int), 1, message);
printf("%i \n", start); //#of first 4 bytes was 280
fseek(message, start, SEEK_CUR); //skip 280 bytes
keep[0] = fgetc(message); //get next character, keep it
printf("%c", keep[0]); //print character
while( (keep[0] = getc(message)) != EOF) {
fread(&start, sizeof(int), 1, message);
fseek(message, start, SEEK_CUR);
keep[0] = fgetc(message);
printf("%c", keep[0]);
}
fclose(message);
system("pause");
}
编辑:
在调试器中查看我的代码后,似乎在 while 循环中使用 \'getc\' 会破坏所有内容。我通过创建一个名为 letter 的新字符,然后将我的代码替换为以下内容来修复它:
fread(&start, sizeof(int), 1, message);
fseek(message, start, SEEK_CUR);
while( (letter = getc(message)) != EOF) {
printf("%c", letter);
fread(&start, sizeof(int), 1, message);
fseek(message, start, SEEK_CUR);
}
现在它运行得很好。当然欢迎提出更多建议。谢谢大家。
当(( c = getc(file))!= EOF)循环不会停止执行
下载声明:
本站所有软件和资料均为软件作者提供或网友推荐发布而来,仅供学习和研究使用,不得用于任何商业用途。如本站不慎侵犯你的版权请联系我,我将及时处理,并撤下相关内容!