我需要实现以下逻辑:
如果文件存在就以可读写的方式打开它,否则新建一个。代码如下:
int today = 0;
char* pFileName = "reminder.set";
CFile f;
CFileException e,e1;
if ( !f.Open( pFileName, CFile::modeReadWrite, &e ))
{
if (f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, &e1 ))
f.Write( &today, sizeof(int))
else
return FALSE;
}
else
{
f.Read(&lastMark,sizeof(int));
}
但是当程序运行时,如果找不到reminder.set程序就出错中止,但是reminder.set已经建立。也就是说f.Write( &today, sizeof(int))出错,我想知道为什么,谁能帮帮我吗?
如果文件存在就以可读写的方式打开它,否则新建一个。代码如下:
int today = 0;
char* pFileName = "reminder.set";
CFile f;
CFileException e,e1;
if ( !f.Open( pFileName, CFile::modeReadWrite, &e ))
{
if (f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, &e1 ))
f.Write( &today, sizeof(int))
else
return FALSE;
}
else
{
f.Read(&lastMark,sizeof(int));
}
但是当程序运行时,如果找不到reminder.set程序就出错中止,但是reminder.set已经建立。也就是说f.Write( &today, sizeof(int))出错,我想知道为什么,谁能帮帮我吗?
解决方案 »
- 把一个程序的界面做成ActiveX控件,怎么做?
- 我在IE toolbar里加的按钮不能响应我的事件
- 谁能给我写一个 DLL ? 我多谢他了,把一个 CString 转成 char * 类型的
- 如何伪造IP 发送HTTP 请求
- 连接ACCESS,出现参数不足,期待是4。
- 关于预编译的一些疑问~~
- HELP ME!关于TCP/IP传输位图的问题.
- 函数名前加&代表什么?
- 使用ado编程中,使用RecordSet对象的Open方式与使用Connection对象的Excute命令有什么不同???
- 怎样disable工具条中的按钮?
- 请问怎么调用非模式的Message?
- C#与C++的效率之争(转贴1)
这部分代码是正常的,因为当以读写方式打开文件失败,不会执行到此行;
我想也不是分号的问题,我其实是这样写的:
if (f.Open( pFileName, CFile::modeCreate | CFile::modeWrite, &e1 ))
{
f.Write( &today, sizeof(int));
}
else
{
return FALSE;
}编译没有警告也没有错误,每次都是执行到f.Write( &today, sizeof(int))的时候出现致命错误,然后就葛屁了!!
我都快疯了,为什么会有这样的问题,我的操作系统是win2000
的问题
throw( CFileException );会不会是&today的问题,把它该成一个字符数组试试
如 char szChar[10];
strcpy(szChar ,"test");
f.Write(szChar , strlen(szChar));