花開丶若相惜ソ 发表于 2018-3-20 17:56:22

请问这题目怎么理解答案。。

运行结果是 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);
}

人造人 发表于 2018-3-20 17:56:23

为什么没有人回复?

你把代码写成这样,在我之前看到了你之前发的那个帖子,我就没兴趣回复
这一次,我为鱼币而来
不过,我好像不缺鱼币,^_^

把代码写成这样多好?
#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);

        printf("\n");

        return 0;
}



你是对的,在我的系统上结果是
44556644556677
请按任意键继续. . .

这是直接粘贴你代码的结果
44556644556677请按任意键继续. . .


代码
#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);

        printf("\n");

        return 0;
}


有两条有意义的警告
1>c:\visualstudioprojects\tmp\tmp\main.c(15): warning C4308: 负整型常量转换为无符号类型
1>c:\visualstudioprojects\tmp\tmp\main.c(15): warning C4307: “*”: 整型常量溢出


如果有兴趣,可以把你系统上的反汇编代码贴上来,我分析分析

人造人 发表于 2018-3-20 18:47:49

而且,这次提问有进步
起码写了

”运行结果是”以及 “我想应该是”

这让我有了回答的方向

ba21 发表于 2018-3-20 19:10:50

楼上正。不知道你用的什么编译器

风过无痕丶 发表于 2018-3-20 19:19:14

哈哈 get到正确提问方式
页: [1]
查看完整版本: 请问这题目怎么理解答案。。