读书人

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

发布时间: 2012-02-24 16:30:39 作者: rapoo

请指点一下一个简单问题,谢谢
想把数组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;
}

读书人网 >C++

热点推荐