我有一个小挑战(可以在页面底部找到,标题是 CSI。https ://x.cs50.net/2012/psets/4/pset4.html,太长了,我无法粘贴。) (不,我不是想作弊,我已经找到了完整的代码解决方案,但我希望我的工作..)
工作是在 .raw 文件中嗅出 JPG 文件(文件已上传)
我正在使用下面显示的代码:
#include <stdio.h>
int main(void){
FILE* fp = fopen("card.raw", "r");
if (fp == NULL){
printf("error!");
}
char foo[512];
fread(foo,sizeof(foo),sizeof(foo[0]), fp);
for(int j = 0; j < 20000; j++) {
if (foo[0] == 0xff){
printf("jackpot");
return 0;
}
else {
printf(" %d ", foo[0]);
fread(foo,sizeof(foo),sizeof(foo[0]), fp);
}
}
}
问题是,我不知道我做错了什么。它应该在达到 0xff 时立即尖叫并退出,但它会继续前进。 如果需要,可以在https://mega.co.nz/#!tZcFWYIS!DmPAGT7FHLFgtW0SorWU-SE-gfJfR7MlbxdNucN1Biw找到文件是。
更新:感谢大家的帮助,我终于中奖了。这是我最终得到的结束代码。
#include <stdio.h>
#include <stdint.h>
typedef uint8_t BYTE;
int main(void){
FILE* fp = fopen("card.raw", "rb");
if (fp == NULL){
printf("error!");
}
BYTE foo[512];
for (int j = 0;fread(foo,sizeof(foo),sizeof(foo[0]), fp) > 0; j++){
if (foo[0] == 0xff){
printf("jackpot, %d", j);
return 0;
}
}
}