c语言获取当前登录用户名,【图片】【C语言】【控制台】提取腾讯通用户信息(id,用户名,手机)【erbi_lucifer吧】_百度贴吧...

这段代码展示了如何使用C++打开并读取文件,利用CreateFileA函数获取文件句柄,通过GetFileSize获取文件大小,然后读取内容到缓冲区。接着,它将UTF-8编码的网页信息解码为Unicode,再转换为ASCII码。最后,内容被显示在编辑器中,并确保所有内存都被正确释放。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

/******************************************************************************

打开用户文件

******************************************************************************/

int ReadTheFile(char str[]){

HANDLE pfile;

pfile = ::CreateFileA(str,GENERIC_READ,0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); // 用这个函数比OpenFile好 FILE_FLAG_DELETE_ON_CLOSE

if(pfile == INVALID_HANDLE_VALUE)

{

printf("打开文件失败2:%s\n",str);

CloseHandle(pfile); // 一定注意在函数退出之前对句柄进行释放。

return 1;

}

DWORD filesize=GetFileSize(pfile,NULL);

char* buffer=(char*)malloc((filesize+1)*sizeof(char)); 最后一位为 '/0'。

ZeroMemory(buffer,sizeof(buffer));

DWORD readsize;

ReadFile(pfile,buffer,filesize,&readsize,NULL);

buffer[filesize]=0;

//对读取的网页信息(UTF_8编码)进行解码,转换为Unicode再转换为ASCII码

int wLen2 = MultiByteToWideChar(CP_UTF8, 0, buffer, -1, NULL, 0);

wchar_t* wStr2 = (wchar_t*)malloc(sizeof(wchar_t)*wLen2);//

MultiByteToWideChar(CP_UTF8, 0, buffer, -1, wStr2, wLen2);

//unicode to gb2312

int aLen2 = WideCharToMultiByte(CP_ACP, 0, wStr2, -1, NULL, 0, NULL, NULL);

char* converted2 = (char*)malloc(sizeof(char)*aLen2);

WideCharToMultiByte(CP_ACP, 0, wStr2, -1, converted2, aLen2, NULL, NULL);

EditShow(converted2);

free(buffer);

free(wStr2);

free(converted2);

CloseHandle(pfile); // 关闭句柄。

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值