- 论坛徽章:
- 0
|
- #include <stdio.h>;
- #include <stdlib.h>;
- int main(int argc, char **argv)
- {
- char s[]="2229";//最奇怪的就是这里
- FILE *fp;
- unsigned int start, end, index_num, i, ip, startip, endip, fpos;
- fp = fopen("/home/assiss/data/QQWry.Dat", "rb");
- fread(&start, 4, 1, fp);
- fread(&end, 4, 1, fp);
- index_num = (end - start) / 7 + 1;
- fseek(fp, start, SEEK_SET);
- for (i = 0; i < index_num; i++)
- {
- fseek(fp, start + i * 7, SEEK_SET);
- fread(&startip, 4, 1, fp);
- fread(&fpos, 3, 1, fp);
- fseek(fp, fpos, SEEK_SET);
- printf("%d\n",fread(&endip, 4, 1, fp));//如果改变上面的s[]="",那么这里会有质的变化
- }
- fclose(fp);
- return 0;
- }
复制代码
请大家下载
http://96hk.y365.com/soft/qqwry.rar
或者已经安装了GAIM的就直接用它自带的试试。
请大家帮我测试这个程序, 我快疯掉了。
我觉得这可能不是程序问题,而是系统/GCC的问题……
我描述一下:
1.
char s[]="2229";//长度>;=4
那么
printf("%d\n",fread(&endip, 4, 1, fp));
将会打印0.即表示什么都没读。
2.
char s[]="229";//长度<=3
那么
printf("%d\n",fread(&endip, 4, 1, fp));
将会打印1.即表示读到了。
我花了6个小时,没弄明白……
希望是因为我粗心的错,但我现在实在看不出来了,已经要崩溃了……
系统是FreeBSD5.3R,光盘刻录的,没有make world.没有make kernel.
gcc是3.4.2.随系统带的。没有升级。
port装了不少,但应该跟这个没关系吧?
外来软件只编译了fltk2.0,我想它应该没病毒吧? |
|