鱼C论坛

 找回密码
 立即注册
查看: 2978|回复: 7

文件操作问题

[复制链接]
发表于 2016-3-22 14:45:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <iostream>
#include <stdio.h>
using namespace std;
typedef struct Student {
        char name[20];
        char password[10];
        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-03-22 下午2.41.25.png
屏幕快照 2016-03-22 下午2.39.47.png
屏幕快照 2016-03-22 下午2.39.58.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-3-22 14:46:04 | 显示全部楼层
这是文件
屏幕快照 2016-03-22 下午2.45.29.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-22 18:41:26 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[0];
                                        你的结构.password = cs[1];
                                        你的结构.num = cs[2];
                                }
                        }
                        else        
                                break;
                        i++;
                }
        }
        cstdiofile.Close();
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-22 22:38:35 | 显示全部楼层
楼主,用的什么编译器?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-3-23 01:23:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-23 10:26:49 | 显示全部楼层
小学期 发表于 2016-3-22 22:38
楼主,用的什么编译器?

codeunner   OSX平台上的我不确定有没有Windows版
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-23 11:12:06 | 显示全部楼层
machimilk 发表于 2016-3-23 01:23
给你一个地址参考一下吧
http://www.cnblogs.com/skyme/archive/2011/01/09/1931396.html

也就是说文件要自己用程序写是么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 22:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表