C语言 从文件中读出内容时出错



各位程序员好,我正试图理解我的代码的这个区域到底发生了什么。问题:我读一些内容到一个文件,然后我试图读回文件的内容只是为了确保它的正确的内容,我已经放入文件,但它没有给我正确的输出,所以我有点困惑这里是代码(保存内容为二进制):

typedef struct acc
{
 int id_no;
 int pin;
 float bal;
}Acc;
int Crte_acc(FILE *flepss)
{
  int i,cnt;
  Acc user[1000];
  cnt = 1000;
  for (i=1;i<1000;i++)
 {
    cnt+=1;
    user[i].id_no = cnt;
    user[i].bal=1000;
    user[i].pin=0000;
    fwrite(&user[i].id_no,sizeof(int),1,flepss);
    fwrite(&user[i].pin,sizeof(int),1,flepss);
fwrite(&user[i].bal,sizeof(int),1,flepss);
 }
  return fclose(flepss);
} 

是的,上面的代码需要一个文件指针和一个计数来保持id增加1(1001,1002等),bal和pin需要我用这些数字设置var。所以我想知道是什么问题,这是我显示内容的代码。

void DisplyFile()
{
  FILE *dfp;
  int x;
  Acc pruser[1000];
  dfp = fopen("Account.dat","rb");
  fseek(dfp,0,SEEK_SET);
      while (1)
 {
    if(!feof(dfp))
    {
        for (x=1;x<1000;x++)
        {
            fread(&pruser[x].id_no,sizeof(pruser[x].id_no),1,dfp);
            fread(&pruser[x].pin,sizeof(pruser[x].pin),1,dfp);
            fread(&pruser[x].bal,sizeof(pruser[x].bal),1,dfp);
            printf("%d  ",pruser[x].id_no);
            printf("%d  ",pruser[x].pin);
            printf("%.2fnn",pruser[x].bal);
        }
    }
    else
    {
        break;
    }
 }
}

编辑:通过内容出来错误我的意思是,给我垃圾值,以表明我写文件没有保存。

问题可能是由于缺少fclose或fopen…我们几乎不需要做什么来构建一个有用的东西。

检查三件事:

- fopen对应fclose吗?

-打开类型是否相似?是否同时使用"wb"one_answers"rb" ?

-另一点是fwrite(&user[i].bal,sizeof(int),1,flepss);bla是浮点数。float和int可能有相同的sizeof,但是…更安全的假设是,情况并非总是如此!

#include <stdio.h>
typedef struct acc
{
    int id_no;
    int pin;
    float bal;
}Acc;
int Crte_acc()
{
    FILE *flepss;
    int i,cnt;
    Acc user[10];
    cnt = 1000;
    flepss = fopen("Account.dat","wb");
    for (i=1;i<10;i++)
    {
        cnt+=1;
        user[i].id_no = cnt;
        user[i].bal=10;
        user[i].pin=0000;
        fwrite(&user[i].id_no,sizeof(int),1,flepss);
        fwrite(&user[i].pin,sizeof(int),1,flepss);
        fwrite(&user[i].bal,sizeof(float),1,flepss);
    }
    return fclose(flepss);
}
void DisplyFile()
{
    FILE *dfp;
    int x;
    Acc pruser[10];
    dfp = fopen("Account.dat","rb");
    fseek(dfp,0,SEEK_SET);
    while (1)
    {
        if(!feof(dfp))
        {
            for (x=1;x<10;x++)
            {
                fread(&pruser[x].id_no,sizeof(pruser[x].id_no),1,dfp);
                fread(&pruser[x].pin,sizeof(pruser[x].pin),1,dfp);
                fread(&pruser[x].bal,sizeof(pruser[x].bal),1,dfp);
                printf("%d  ",pruser[x].id_no);
                printf("%d  ",pruser[x].pin);
                printf("%.2fnn",pruser[x].bal);
            }
        }
        else
        {
            break;
        }
    }
    fclose(dfp);
}
int main()
{
    Crte_acc();
    printf("file printedn");
    DisplyFile();
    printf("end file read 1n");
    DisplyFile();
    printf("end file read 2n");
    return 0;
}
编译:gcc main.c -o main

再见,

相关内容

  • 没有找到相关文章

最新更新