为什么无法执行呢?

PingJie 2003-10-16 04:57:48
看一下着问题
CString str="fujian,2003,hiji";
int p=0,n=0;
char m[16];
for(int i=0;i<16)
{
if(str[i]==',')p=1;
if((str[i]==',')&&(p==1))p=2;
if(p==1)
{
m[n]=str[i];
n++;
}
}
在vc中编译过了 ,可运行却出现了问题,望那位同志能帮忙一下。
我的目的是要取出str中“2003”这个数据
谢谢了!
...全文
77 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingxu 2003-10-16
  • 打赏
  • 举报
回复
不用这么麻烦吧。
直接用pos来定位“,”和“ ”
取这个子串不就是2003了吗?
yintongshun 2003-10-16
  • 打赏
  • 举报
回复
当字符为“hiji"中的一个时不p又成了1了吗
int test;
int j=0;
for(int i=0;i<16)
{
if(str[i]==',') break;

}
for(test=i;test<i+5;test++)
{m[j++]=str[test];
}
PingJie 2003-10-16
  • 打赏
  • 举报
回复
哦 笔误了
应该是
CString str="fujian,2003 hiji ";
int p=0,n=0;
char m[16];
for(int i=0;i<16)
{
if(str[i]==',')p=1;
if((str[i]==' ')&&(p==1))p=2;
if(p==1)
{
m[n]=str[i];
n++;
}
}
abcpanpeng 2003-10-16
  • 打赏
  • 举报
回复
p的值等于2后第三个if条件还会成立吗?
也就是说当i的位置为‘,’时,p=2了,所以第三个if条件不会成立。
AlvaChin 2003-10-16
  • 打赏
  • 举报
回复
你的程序永远不可能正确执行!

当i=6的时候,这时if(str[i]==',')p=1;所以,p=1;
然后,if((str[i]==',')&&(p==1))p=2;条件同样成立,所以p=2;
所以你的第三个if的内容不可能被执行。

=========================================================
百尺竿头,卧薪尝胆

Darlinton 2003-10-16
  • 打赏
  • 举报
回复
你的逻辑有问题,不是语法的错误。A&&B与A是有包含关系的,所以不可以分别拿来作判断条件。

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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