如何处理从文本文件中读取的字符串

wonhao 2004-09-11 11:17:07
CStdioFile file;
char buff[256];

file.Open("Book1.txt",CFile::modeRead|CFile::typeText);
int n = file.GetLength();
UINT nBytesRead =file.Read(buff,256);

CString str;
str.Format("%s",buff);
MessageBox(str);
弹出的对话框中显示的字符串的内容是乱码?请问这是怎么回事?
...全文
301 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
wonhao 2004-09-14
  • 打赏
  • 举报
回复
up
wonhao 2004-09-13
  • 打赏
  • 举报
回复
如果我把读出的字符串写入另一个文件,字符串是存在的,为什么从文件中读取得字符串就不能在程序中编辑处理呢
wonhao 2004-09-13
  • 打赏
  • 举报
回复
up
wonhao 2004-09-12
  • 打赏
  • 举报
回复
up
wangjinbao 2004-09-12
  • 打赏
  • 举报
回复
关键是字符数组串初始化memset(buff, '\0', 256);
另外就是字符数组的大小要适合
huangxiaoke2000 2004-09-12
  • 打赏
  • 举报
回复
用ReadString按行读不就可以了吗
gooyan 2004-09-12
  • 打赏
  • 举报
回复
我以前也遇到过这个问题,一堆:烫烫......
请初始化buffer,就好了
大雨仔 2004-09-12
  • 打赏
  • 举报
回复
恩!不太熟悉
ponydph 2004-09-12
  • 打赏
  • 举报
回复
乱码的原因,应该是分配的缓冲区没有完全赋值。可以按darongtou(Only one)进行初始化,也可以循环读出,记录读出的字节数。然后显示
darongtou 2004-09-12
  • 打赏
  • 举报
回复
没有良好的编程风格.
char buff[256];

file.Open("Book1.txt",CFile::modeRead|CFile::typeText);
int n = file.GetLength();
UINT nBytesRead =file.Read(buff,256);

改成:
CStdioFile file;
char buff[256];
memset(buff, 0, 256);

if (!file.Open("d:\\Book1.txt", CFile::modeRead | CFile::typeText))
{
MessageBox("打开文件d:\Book1.txt失败!");
return;
}
int n = file.GetLength();
if (n <= 0)
{
MessageBox("d:\Book1.txt文件为空.");
}
UINT nBytesRead = file.Read(buff, 256);
TRACE("已经从d:\Book1.txt读到%d个字节.", nBytesRead);

CString str;
str.Format("%s",buff);
MessageBox(str);


试一下
ponydph 2004-09-12
  • 打赏
  • 举报
回复
你把jinxuliang(smielfox)老兄的程序稍微改动一下就可以了。
新加的那一句为:
buff[256]='\0';//而不是buff[255],还有就是给Char类型赋值应该用单引号,用双引号是字符串后面会自动加一个\0。
hopen 2004-09-12
  • 打赏
  • 举报
回复
读取的长度把汉字分割了
使用了CStdioFile 用ReadString按行读取
wonhao 2004-09-12
  • 打赏
  • 举报
回复
希望给我帮助,很急!谢谢
wonhao 2004-09-11
  • 打赏
  • 举报
回复
照楼上的做了, 可还是不行啊
jinxuliang 2004-09-11
  • 打赏
  • 举报
回复
CStdioFile file;
char buff[256];

file.Open("Book1.txt",CFile::modeRead|CFile::typeText);
int n = file.GetLength();
UINT nBytesRead =file.Read(buff,255);//改为
buff[255]="\0";//加上这一行
//msdn解释:A null character is appended to the end of the characters written.


CString str;
str.Format("%s",buff);
MessageBox(str);

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧