首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

请指点一下一个简单有关问题,多谢

2012-02-24 
请指点一下一个简单问题,谢谢想把数组temp里以逗号分割的3个部分分别存储到buf[0],buf[1],buf[2],但运行后

请指点一下一个简单问题,谢谢
想把数组temp里以逗号分割的3个部分分别存储到buf[0],buf[1],buf[2],但运行后,出现乱码,请指点,另外类似的问题,有没有更简洁的获取字符段方法.
#include <iostream>
using   namespace   std;
int   main()
{
int   i=0,j=0;
char   *p;
char   temp[20]= "wo,ai,ni ";
char   buf[2][3];
p=temp;
  while(*p)
{
if((*p)!= ', ')
{
buf[i][j]=*p;
j++;
p++;
}
else
{
j=0;
i++;
p++;
}
}
cout < <buf[0] < <endl;
cout < <buf[1] < <endl;
cout < <buf[2] < <endl;
return   0;
}


[解决办法]
char buf[3][3];
要简单,还是用正则表达式。
[解决办法]
while(*p)
{
if((*p)!= ', ')
{
buf[i][j]=*p;
j++;
p++;
}
else
{
buf[i][j] = 0;
j=0;
i++;
p++;
}
}
buf[i][j] = 0;
[解决办法]
这样改就可以了
#include <iostream>
using namespace std;

int main()
{
int i = 0, j = 0;
char *p;
char temp[20]= "wo,ai,ni ";
char buf[3][3]; //数组定义有问题
p = temp;
while(*p != '\0 ')
{
if((*p) != ', ')
{
buf[i][j] = *p;
j++;
p++;
}
else
{
j = 0;
i++;
p++;
}
}
for(int i = 0 ;i < 3; ++i)
buf[i][2] = '\0 '; //记得每个字符串后加 '\0 '表示结束

cout < <buf[0] < <endl;
cout < <buf[1] < <endl;
cout < <buf[2] < <endl;
return 0;
}

热点排行