主题:SDK中的WriteFile
linshubiao
[专家分:930] 发布于 2006-06-06 08:01:00
开始学SDK,用WriteFile写入文件的内容都是乱码.
stuct data
{
int a,b,c;
}
WriteFile(filehandle,&dataRec,sizeof(dataRec),&numWrite,0);
文件打开是正确的,就是在写入的时候,在文件里显示的都是乱码.
自己不知道是为什么.
请教高手!
回复列表 (共10个回复)
沙发
linshubiao [专家分:930] 发布于 2006-06-06 11:18:00
OO,没人呀?
板凳
zlhhz [专家分:710] 发布于 2006-06-06 15:53:00
当然是乱码
写入的是二进制数据
3 楼
linshubiao [专家分:930] 发布于 2006-06-06 20:57:00
但用readfile读不了数据!
4 楼
zlhhz [专家分:710] 发布于 2006-06-07 08:53:00
最好把你的代码贴上来,你就说“readfile读不了数据”,大家都不知道哪里出错了
。你要读写的文件是文本的还是二进制的?这都有关系
5 楼
linshubiao [专家分:930] 发布于 2006-06-07 11:59:00
是这本书是的例子《深入学习:Win32系统服务开发与实例》
//filewrite.cpp
#include <windows.h>
#include <iostream.h>
typedef struct
{
int a,b,c;
}data;
void main()
{
HANDLE filehandle;
BOOL success;
DWORD numWrite;
char filename[MAX_PATH];
int x;
data dataRec;
//get the file name
cout<<"Enter the file name:";
cin>>filename;
//Open the file
fileHandle = CreateFile(filename,GENERIC_WRITE,0,0,CREATE_NEW,0,0);
if(fileHandle == INVALID_HANDLE_VALUE)
{
cout<<"Error number "<<GetLastError()<<endl;
return ;
}
//write 10 structures to the file
x = 0;
do
{
dataRec.a = dataRec.b = dataRec.c = x;
success = WriteFile(fileHandle,&dataRec,sizeof(data),&numWrite,0);
}while((x++ <10)&& success);
//Close the file
CloseHandle(fileHandle);
}
这是书上的源程序,我输入的文件名是test.txt,程序执行后,我打开test.txt文件,里面都是乱码。
读取的错误是自己造成的了,可以读取出来,不好意思。^_^
不过,在CreateFile的时候,没有指出要是二进制的。是默认的?
6 楼
zlhhz [专家分:710] 发布于 2006-06-07 21:44:00
WriteFile 写的是二进制数据
7 楼
linshubiao [专家分:930] 发布于 2006-06-08 08:07:00
能实现文本的输入吗?
8 楼
zlhhz [专家分:710] 发布于 2006-06-08 18:59:00
使用:
_tfopen();
_ftprintf();
_ftscanf();
fclose();
9 楼
linshubiao [专家分:930] 发布于 2006-06-09 01:23:00
不是SDK里的函数了呀。
不过,可以完成功能
10 楼
zlhhz [专家分:710] 发布于 2006-06-09 09:41:00
标准库里的
如果不想用它,可以用wsprintf先将数据格式化到缓冲区,再用writefile写到文件
我来回复