2 jian yun rui Jian_Yun_Rui 于 2016.04.21 20:47 提问

我来问下这道题的小问题哈
c++

#include
#include
#include
using namespace std;
char u[200],U[200],F[200],X[200],a='a';
int DOU=1; //
void shuru();
void cunfang();
struct FF
{
char first[100];
char second[100];
bool flag;
};
int main()
{
shuru();
cunfang();
return 0;
}

void shuru()
{
cout<<"格式形如:"<B,C->D,B->D} AB" < cout cin>>U>>F>>X;
for(int i=0;i<strlen(F)-1;i++)
{
a=F[i];
if(a==',')DOU++;

}
}

void cunfang()
{
FF *ff=new FF[DOU];
int t=0,k=0,q=0; //t记录first个数 q记录second个数,k记录第几个
bool ww=false;
for(int j=1;j<strlen(F)-1;j++)
{
if(F[j]==','){
k++;t=0;q=0;
ww=false;
continue;
}else if(F[j]=='-'){
j+=2;
ww=true; //标记现在是second了;
}
if(!ww){
ff[k].first[t]=F[j];t++;}
else{
ff[k].second[q]=F[j];q++;}
}
for(int i=0;i<DOU;i++)
cout<<ff[i].first<<" "<<ff[i].second<<endl;
cout<<strlen(ff[0].first)<<" "<<strlen(ff[1].second)<<endl;

}

这是运行的图片
图片说明

我想问下问什么第一个输出的字符数量不是1啊 剩下的那些是哪里来的?

3个回答

caozhy
caozhy   Ds   Rxr 2016.04.21 21:50
已采纳

memset(first,0,100);
memset(second,0,100);

Jian_Yun_Rui
Jian_Yun_Rui 感谢哈
一年多之前 回复
caozhy
caozhy 如果问题解决,请点下我回答右边的采纳,谢谢
一年多之前 回复
caozhy
caozhy 如果非要深究,这些数组在堆栈上,堆栈上次释放的栈顶的内容被重新分配,这些随机的内容就是它们。
一年多之前 回复
caozhy
caozhy 回复JIAN_BOY_RISE: 没有初始化,结果就是随机的。
一年多之前 回复
Jian_Yun_Rui
Jian_Yun_Rui 谢谢,解决了,可是为什么我还是有点不明白想请教下,我这好像也没发生越界问题,怎么第一个就是输出不正确
一年多之前 回复
Jian_Yun_Rui
Jian_Yun_Rui   2016.04.21 20:58

为什么会有奇怪的字符在这上面啊,而且字符计算也是这样

caozhy
caozhy   Ds   Rxr 2016.04.21 21:50

char first[100];
char second[100];
//需要填0
memset(first,0,100);
memset(first,0,100);

Csdn user default icon
上传中...
上传图片
插入图片