阴影中的曙光 发表于 2016-3-22 14:45:02

文件操作问题

#include <iostream>
#include <stdio.h>
using namespace std;
typedef struct Student {
        char name;
        char password;
        int num;       
}student;
int main(int argc, char *argv[]) {
        student x;
        FILE *fp;
        int count,filesize;
        fp=fopen("/zpy.txt", "r");
        fseek(fp,0,SEEK_END);//定位到文件尾
        filesize=ftell(fp);
        count=filesize/sizeof(student);//计算结构体数量
        for(int i=0;i<count;i++){
                fread(&x,sizeof(student),1,fp);
                printf("%s %s %d\n",x.name,x.password,x.num);
        }
        fclose(fp);
        return 0;
}
跑出来结果是不对的,我又稍微试了下
结论是程序把文件里的所以东西都按一个字符串出来了,
那么,文件要怎么写才能让程序正确读取?

阴影中的曙光 发表于 2016-3-22 14:46:04

这是文件

拈花小仙 发表于 2016-3-22 18:41:26

@machimilk @黑龍 @ryxcaixia @仰望天上的光

℡.xiao敏 发表于 2016-3-22 20:47:24

本帖最后由 ℡.xiao敏 于 2016-3-22 20:55 编辑

你好,我试试给你点思路。
你这种直接读取结构的方式是不行的……
要先搞清楚怎么读写……一般存储结构数据,会用xml或者ini格式来存储。你非要txt也行。
数据最好写成:
xiaoming|xiao|3
这样为一行,每读取一行,就用"|"分隔符分割,再分别存入你的结构。再读出来……
txt文本不是内存,可以直接结构名字就是指针……所以是不同的概念哦。

另外建议你用:CStdioFile类来读写文件,更方便,下面给你伪代码参考下


        if (cstdiofile.Open(文件地址,CFile::modeReadWrite,NULL))
        {
                int i = 0;
                for(;;)
                {
                        if (cstdiofile.ReadString(tmp))        //读取一行。如果最后一行,就返回0.
                        {
                                _Split(tmp,cs,"|");        //分隔符用"|"
                                if (3 == cs.GetSize())
                                {
                                        你的结构.name = cs;
                                        你的结构.password = cs;
                                        你的结构.num = cs;
                                }
                        }
                        else       
                                break;
                        i++;
                }
        }
        cstdiofile.Close();

小学期 发表于 2016-3-22 22:38:35

楼主,用的什么编译器?

machimilk 发表于 2016-3-23 01:23:15

给你一个地址参考一下吧
http://www.cnblogs.com/skyme/archive/2011/01/09/1931396.html

阴影中的曙光 发表于 2016-3-23 10:26:49

小学期 发表于 2016-3-22 22:38
楼主,用的什么编译器?

codeunner   OSX平台上的我不确定有没有Windows版

阴影中的曙光 发表于 2016-3-23 11:12:06

machimilk 发表于 2016-3-23 01:23
给你一个地址参考一下吧
http://www.cnblogs.com/skyme/archive/2011/01/09/1931396.html

也就是说文件要自己用程序写是么?
页: [1]
查看完整版本: 文件操作问题