MFC写入文件
全局定义了1个结构体structstudent{chara1[4];chara2[4];chara3[4];chara4[4];chara5[4];}st1;按纽事件中代...
全局定义了1个结构体
struct student
{
char a1[4];
char a2[4];
char a3[4];
char a4[4];
char a5[4];
}st1;
按纽事件中代码如下:
memcpy(st1.a1,m_name,4);
memcpy(st1.a2,m_sex1,4);
memcpy(st1.a3,sub11,4);
memcpy(st1.a4,str,4);
memcpy(st1.a5,str1,4);
MessageBox(st1.a1);
fstream is("student",ios::binary);
is.write((char*)&st1,sizeof(student));
is.close();
文件写不进去,求解啊!!!!好人帮帮忙吧
大哥 你这回答。。 展开
struct student
{
char a1[4];
char a2[4];
char a3[4];
char a4[4];
char a5[4];
}st1;
按纽事件中代码如下:
memcpy(st1.a1,m_name,4);
memcpy(st1.a2,m_sex1,4);
memcpy(st1.a3,sub11,4);
memcpy(st1.a4,str,4);
memcpy(st1.a5,str1,4);
MessageBox(st1.a1);
fstream is("student",ios::binary);
is.write((char*)&st1,sizeof(student));
is.close();
文件写不进去,求解啊!!!!好人帮帮忙吧
大哥 你这回答。。 展开
7个回答
展开全部
没想到这200分会被我赚到!
把
fstream is("student",ios::binary);
改成
ofstream is("student",ios::binary);
就能写入了。
下面是我在2005上给你实现的代码:
=========================================
include<fstream>
......
using namespace std;
struct student
{
char a1[4];
char a2[4];
char a3[4];
char a4[4];
char a5[4];
}st1,st2;
void CmfcwriteDlg::OnBnClickedButton1()
{
memcpy(st1.a1 ,"jac",sizeof(4));
memcpy(st1.a2 ,"ja1",sizeof(4));
memcpy(st1.a3 ,"ja2",sizeof(4));
memcpy(st1.a4 ,"ja3",sizeof(4));
memcpy(st1.a5 ,"ja4",sizeof(4));
ofstream os("students");
os.write ((char*)&st1,sizeof(student));
os.close ();
//下面是读取的方法,赠送的
ifstream is("students");
is.read ((char*)&st2,sizeof(student));
is.close ();
::MessageBoxA (NULL,st2.a1,"A",MB_OK);
}
把
fstream is("student",ios::binary);
改成
ofstream is("student",ios::binary);
就能写入了。
下面是我在2005上给你实现的代码:
=========================================
include<fstream>
......
using namespace std;
struct student
{
char a1[4];
char a2[4];
char a3[4];
char a4[4];
char a5[4];
}st1,st2;
void CmfcwriteDlg::OnBnClickedButton1()
{
memcpy(st1.a1 ,"jac",sizeof(4));
memcpy(st1.a2 ,"ja1",sizeof(4));
memcpy(st1.a3 ,"ja2",sizeof(4));
memcpy(st1.a4 ,"ja3",sizeof(4));
memcpy(st1.a5 ,"ja4",sizeof(4));
ofstream os("students");
os.write ((char*)&st1,sizeof(student));
os.close ();
//下面是读取的方法,赠送的
ifstream is("students");
is.read ((char*)&st2,sizeof(student));
is.close ();
::MessageBoxA (NULL,st2.a1,"A",MB_OK);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的fstream对象的参数设置不对,你的第二个参数默认是打开方式的一种,怎么能够写入呢?你可以换成 fstream is("student",ios::binary||ios::out);详细的用法可以去网上搜索一下。
还有就是那个write函数的第一个参数,由于你要写入的是一个结构体,而参数要求是一个字符指针,虽然你做了强制转换,但是在写入的时候可能会出现数据丢失,建议使用循环,对结构体的成员分别写入。
还有就是那个write函数的第一个参数,由于你要写入的是一个结构体,而参数要求是一个字符指针,虽然你做了强制转换,但是在写入的时候可能会出现数据丢失,建议使用循环,对结构体的成员分别写入。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会写不进去的啊,是不是你写的东西太小了,还在缓存中??如果是这样的话,你最好在写完文件为关闭之前,把缓存强行Flush一下!
或者是你写到其他地方去了而自己还在工程目录里面找文件,所以没有找到
或者是你写到其他地方去了而自己还在工程目录里面找文件,所以没有找到
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那就别用结构体 用那个CSstdioFile和CFile试试 感觉那样比较简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fstream is("student",ios::binary);错啦
改成ofstream is("student",ios::binary);
就OK啦
改成ofstream is("student",ios::binary);
就OK啦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询