不能debug,请帮我看看错在哪

111222 2001-07-19 02:29:05
机器不能debug,请帮我看看
想读cgi.txt里面的每行分别赋值给char* cginame数组




char* cginame[900];
int i = 0;
CString csline;
CStdioFile file;
file.Open("cgi.txt", CFile::modeRead,NULL);
while(file.ReadString(csline)!=NULL)
{
strcpy(cginame[line],csline.GetBuffer(csline.GetLength()));//就在这里出的错
csline.ReleaseBuffer(-1);
line++;
}
file.Close();
...全文
60 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
vcsongs 2001-07-19
  • 打赏
  • 举报
回复
师弟还没有解决这个问题呀.
上面的是没有分配内存的原因. 不多说了...

最简单的方法是用CString. 出问题应该是其它的代码...
另一个方法: //我是在这里现写的没有测试过的... :)
char* cginame[900];
for(int i = 0; i < 900; i++)
cginame[i] = NULL;

CStdioFile file;
file.Open("cgi.txt", CFile::modeRead | CFile::typeText); //注意这里.

int n, line = 0;
CString strLine;
while(file.ReadString(strLine) != NULL)
{
n = strLine.GetLength();
cginame[line] = new char[n + 1];
strcpy(cginame[line], strLine.GetBuffer(n);
cginame[line][n] = NULL;
//strLine.ReleaseBuffer() //这一句没有用的.不需要...
line++;
}
file.Close();

// 注意要delete cginame[...]
111222 2001-07-19
  • 打赏
  • 举报
回复
用CString了
111222 2001-07-19
  • 打赏
  • 举报
回复
注意到了,没给cginame分配内存。
我改成了char cginame[900][128];
不过这样分配的内存很固化,要是cgi.txt里有一行长度300的就出错了
有没有更好的半大?

16,472

社区成员

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

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

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