回 帖 发 新 帖 刷新版面

主题:SDK中的WriteFile

开始学SDK,用WriteFile写入文件的内容都是乱码.

stuct data
{
int a,b,c;
}

WriteFile(filehandle,&dataRec,sizeof(dataRec),&numWrite,0);

文件打开是正确的,就是在写入的时候,在文件里显示的都是乱码.
自己不知道是为什么.

请教高手! 

回复列表 (共10个回复)

沙发

OO,没人呀?

板凳

当然是乱码
写入的是二进制数据

3 楼

但用readfile读不了数据!

4 楼

最好把你的代码贴上来,你就说“readfile读不了数据”,大家都不知道哪里出错了
。你要读写的文件是文本的还是二进制的?这都有关系

5 楼

是这本书是的例子《深入学习: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 楼

WriteFile 写的是二进制数据

7 楼

能实现文本的输入吗?

8 楼

使用:
_tfopen();
_ftprintf();
_ftscanf();
fclose();

9 楼

不是SDK里的函数了呀。
不过,可以完成功能

10 楼

标准库里的
如果不想用它,可以用wsprintf先将数据格式化到缓冲区,再用writefile写到文件

我来回复

您尚未登录,请登录后再回复。点此登录或注册