关于字符串的操作(50分)

  • 主题发起人 主题发起人 begginnerest
  • 开始时间 开始时间
B

begginnerest

Unregistered / Unconfirmed
GUEST, unregistred user!
  是这样的 是基于MFC下做的,我在文本框中输入一个字符串,我怎样访问里面的字符?文本框与m_num1进行了绑定。我是这样做的:
 void CVegaOptions::OnButton1()
{  // TODO: Add your control notification handler code here
  UpdateData();
char zhedie[9];
char n;
for (int i=0;i++;i<8)
{
  zhedie=m_num1.GetAt(i);//取得字符串的的每个字符给字符数组
}
for (int j=0;j<8;j++)
{
  if (zhedie[j]==n) MessageBox("ok");
break;
}
m_num1 = _T("");
UpdateData(false);
无论我输入怎样的字符都有会有ok!
我怎样将字符 m_num1 在messagebox中输出。
请大家帮忙一下,谢谢!
 
for (int j=0;j<8;j++)
{
  if (zhedie==n) MessageBox("ok");
break;
}
这句里面 n是什么?
传过来的参数?没有变化?
另外,好象嵌套的循环有点不对
好象 zhedie永远都是m_num1.GetAt(i)最后一个值
for (int i=0;i++;i<8)
{
  zhedie=m_num1.GetAt(i);//取得字符串的的每个字符给字符数组
}
循环完后zhedie中的i好象就没有变过了,是不是?
 
忘了声明,本人C的语法还停留在大二必修课的阶段,要是说的牛头不对马嘴,大家莫笑,呵呵
 
上面的问题我发现了,由于是字符的比较,在n上应该加一个单引号。还没有一个问题没有解决,就是我如何能把zhedie[9]中的内容在对话框中显示出来?我这个是基于mfc的。可以 用messagebox对内容进行输出吗?
 
zhedie[9]?
你想干嘛,数组都越界了。
 
是不是因为这样,你定义了变量char n.但是没有初始化赋值,同时你有定义了数组char zhedie[9],同样没有初始化。所以当你输入的字符串长度小于8时,就会出现某个后面的没有初始化的数组字符和n相等,导致MessageBox出现。
你可以在对话框里绑定TextBox和你输入的字符串
用DDX_Text(pDX, IDC_TEXT, m_num1)
这样你就可以直接使用m_num1了
如果要访问里面的字符,直接用m_num1[x]就可以了,当然如果里面有非英文字符的话,会有问题的
 
上面的问题我发现了,由于是字符的比较,在n上应该加一个单引号。。。。。
---------------------------------------
...你的意思是,一开始你是没有char n;这行的,后来if (zhedie==n) 这行编译错误说n未定义,于是你加入了char n;的说明。而实际上,你是想if (zhedie=='n')...
 
我认为你的程序至少有3处错误:
1.char n;是不是应给它赋个初值,如:
char n=0x20;
2.for (int i=0;i++;i<8)
是不是应该写成: for(int i=0;i<8;i++)
3. for (int j=0;j<8;j++)
{
if (zhedie[j]==n) MessageBox("ok");
break;
}
这样写,你的循环怎么执行,执行第一次就会退出来.和没有for语句有什么区别?
是不是应该改成:
for (int j=0;j<8;j++)
{
if (zhedie[j]==n)
{
MessageBox("ok");
break;
}
}
 
我建议你在char zhedie[9];语句之后,加上ZeroMemory(zhedie,9);这样,你就可以直接用
MessageBox(zhedie);
 
后退
顶部