c++程序,老兄幫我看看問題在哪? (50分)

  • 主题发起人 主题发起人 leway
  • 开始时间 开始时间
L

leway

Unregistered / Unconfirmed
GUEST, unregistred user!
老兄幫我看看問題在哪。謝謝!
c://ToolBar文件為
a.dfmb.dfm
程序如下
char** m_szName;
//****
// 從文件中讀取字符串
//****
void CToolBar::LoadStream(void)
{
fstream fsFile;
WORD i;

fsFile.open("c://ToolBar",ios:: in | ios::binary | ios::nocreate,filebuf::sh_read );

m_szName = new char* [2];

for (i=0;
i<2;
i++)
{
m_szName = new char[6];
fsFile.read(&amp;m_szName[0],5);
m_szName[5]='/0';

strcpy(m_szName,strcat("c://",m_szName));
}

MsgBox(m_szName[0]);

MsgBox(m_szName[1]);
//有問題,總顯示c://a.dfmb.dfm,正確應該是c://b.dfm,請幫我找出原因。

}
 
iStrLen 在哪儿赋的值?
 
程序已更正,請再看看,謝謝!
 
改成:m_szName[5]='/0';
注意 char[6]是从0到5
 
讀不起,寫錯了,已更正,再看看。
 
m_szName[5]='/0';
放在strcpy之后看一下。
 
m_szName = new char[6];
...
strcpy(m_szName,strcat("c://",m_szName));
注意,m_szName 只开辟了6个字符,而你后来却要放进去8个字符("c:/a.dfm"),溢出了
 
不行阿!
MsgBox(m_szName[1]);
//變成c:/a.
 
yt_wyb:
多開辟幾個字節,還是沒有解決問題。
 
m_szName[8]='/0';
放在strcpy之后
~~~~
你的strcat()用的好象有问题。
 
m_szName[8]='/0';
放在strcpy之后
MsgBox(m_szName[1]);
//變成c:/a.dfm,但正確應該是c:/b.dfm
我也懷疑strcat()用的好象有问题,但不知問題出在哪?
 
多人接受答案了。
 
后退
顶部