| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 661 人关注过本帖
标题:文件读取和输出有关问题
只看楼主 加入收藏
zengxiangzho
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2014-4-13
结帖率:0
收藏
已结贴  问题点数:15 回复次数:10 
文件读取和输出有关问题
#include<iostream>
#include<fstream>
using namespace std;
struct student
{
    char name[20];
    int num;
    int age;
    char sex;
};
int main()
{
    student stud[3]={"Li",1001,18,'f',"Fun",1002,19,'m',"Wang",1004,17,'f'};
    ofstream outfile("f5.txt",ios::binary);
    if(!outfile)
    {
        cerr<<"open error!"<<endl;
        abort();
    }
    for (int i=0;i<3;i++)
    outfile.write((char*)&stud[i],sizeof(stud[i]));
    outfile.close();
    return 0;

}

为什么不能在指定的TXT文件内得到三个相应的结构体元素的内容,,输出是乱码!
搜索更多相关主题的帖子: include return 
2014-05-05 11:38
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:3 
首先你这是 C++ 程序,按一位会员的意见,应该到 C++ 区提问。
其实你的代码并无问题。所谓乱码,因为你是以二进制方式写入的文件,因此本身是字符串、字符的内容可以在文件里直观看出,但整型数并不会显示成ascii形式。
2014-05-05 11:50
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:3 
回复 2 楼 top398
你表达你的想法就好了,不要人云亦云

总有那身价贱的人给作业贴回复完整的代码
2014-05-05 11:56
zengxiangzho
Rank: 2
等 级:论坛游民
帖 子:8
专家分:10
注 册:2014-4-13
收藏
得分:0 
回复 2 楼 top398
那怎么怎么样才能直观的在TXT里面看到那些内容的呢??
2014-05-05 12:38
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:3 
回复 3 楼 embed_xuel
兄台言重了,这位仁兄不过引用了一下而已


莫问前尘有愧,但求今生无悔
2014-05-05 13:19
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:3 
不太明白,我也想知道为什么,如果问题解决了,发我看下!

我不是砖家,要努力成为砖家。
2014-05-05 13:23
jidoudou
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2014-2-11
收藏
得分:3 
提示: 该帖被管理员或版主屏蔽
2014-05-05 13:24
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
以下是引用zengxiangzho在2014-5-5 12:38:19的发言:

那怎么怎么样才能直观的在TXT里面看到那些内容的呢??
既然你是要将结构保存到一个文本文件中,且想打开文件就能看到直观的结构内容,那么你应该:
1、用文本方式打开文件;
2、用fprintf格式化输出结构成员。例如:
fprintf(fp, "%s, %d, %d, %c\n", s.a, s.b, s.c, s.d);
如此就能在文件中看到每一个结构都是单独一行,成员之间用逗号(我还加了个空格)分开。
要再把这个文件中的结构数据读出来,就用 fscanf 格式化输入。
2014-05-05 13:49
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
收藏
得分:0 
当然话说回来, fscanf 有些缺点,例如含空格的数据会被分开。
2014-05-05 14:06
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:3 
c++ 语法(有些c++特有的函数啥的) 不太会用 你看看这个可以不

程序代码:
#include <iostream>
#include <fstream>

using namespace std;

struct student
{
    char name[20];
    int num;
    int age;
    char sex;
};

int main()
{
    student stud[3]={"Li",1001,18,'f',"Fun",1002,19,'m',"Wang",1004,17,'f'};
    ofstream outfile("f5.txt",ios::binary);
    if(!outfile)
    {
        cerr<<"open error!"<<endl;
        abort();
    }
    char buf[100]={'\0'};
    for (int i=0;i<3;i++)
    {
        sprintf(buf,"%20s%8d%8d%4c\r\n",stud[i].name,stud[i].num,stud[i].age,stud[i].sex);
        outfile.write(buf,42);
        memset(buf,'\0',100);
    }
    outfile.close();
    return 0;

}

DO IT YOURSELF !
2014-05-05 14:14
快速回复:文件读取和输出有关问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052093 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved