|
50鱼币
运行结果是 11,22,33,44,55,66,77.。。
不知道怎么来的。。按照我想应该是44,55,66,44,55,66,77
#include<stdio.h>
main()
{
FILE *fp;
int i, a[]={11,22,33,44,55,66,77};
fp=fopen("1.dat","wb");
for(i=0;i<7;i++)
fwrite(a+i, sizeof(int ),1,fp);
fclose(fp);
fp=fopen("1.dat","rb");
fseek(fp,-4*sizeof(int ),2);
fread(a,3*sizeof(int ),1,fp);
fclose(fp);
for(i=0;i<7;i++)
printf("%4d",a[i]);
}
为什么没有人回复?
你把代码写成这样,在我之前看到了你之前发的那个帖子,我就没兴趣回复
这一次,我为鱼币而来
不过,我好像不缺鱼币,^_^
把代码写成这样多好? #include<stdio.h>
int main(void)
{
FILE *fp;
int i, a[] = {11, 22, 33, 44, 55, 66, 77};
fp = fopen("1.dat", "wb");
for(i = 0; i < 7; i++)
fwrite(a + i, sizeof(int), 1, fp);
fclose(fp);
fp = fopen("1.dat", "rb");
//fseek(fp, -4 * sizeof(int), 2);
fseek(fp, -4 * sizeof(int), SEEK_END); // 不要写立即数,你直接写2,我不知道2是什么,我还得查文档,写SEEK_END多好?一看就知道是从结尾偏移
fread(a, 3 * sizeof(int), 1, fp);
fclose(fp);
for(i = 0; i < 7; i++)
printf("%4d", a[i]);
printf("\n");
return 0;
}
你是对的,在我的系统上结果是 44 55 66 44 55 66 77
请按任意键继续. . .
这是直接粘贴你代码的结果 44 55 66 44 55 66 77请按任意键继续. . .
代码 #include<stdio.h>
int main(void)
{
FILE *fp;
int i, a[] = {11, 22, 33, 44, 55, 66, 77};
fp = fopen("1.dat", "wb");
for(i = 0; i < 7; i++)
fwrite(a + i, sizeof(int), 1, fp);
fclose(fp);
fp = fopen("1.dat", "rb");
//fseek(fp, -4 * sizeof(int), 2);
fseek(fp, -4 * sizeof(int), SEEK_END); // 不要写立即数,你直接写2,我不知道2是什么,我还得查文档,写SEEK_END多好?一看就知道是从结尾偏移
fread(a, 3 * sizeof(int), 1, fp);
fclose(fp);
for(i = 0; i < 7; i++)
printf("%4d", a[i]);
printf("\n");
return 0;
}
有两条有意义的警告 1>c:\visualstudioprojects\tmp\tmp\main.c(15): warning C4308: 负整型常量转换为无符号类型
1>c:\visualstudioprojects\tmp\tmp\main.c(15): warning C4307: “*”: 整型常量溢出
如果有兴趣,可以把你系统上的反汇编代码贴上来,我分析分析
|
最佳答案
查看完整内容
为什么没有人回复?
你把代码写成这样,在我之前看到了你之前发的那个帖子,我就没兴趣回复
这一次,我为鱼币而来
不过,我好像不缺鱼币,^_^
把代码写成这样多好?
你是对的,在我的系统上结果是
这是直接粘贴你代码的结果
代码
有两条有意义的警告
如果有兴趣,可以把你系统上的反汇编代码贴上来,我分析分析
|