菜鸟求教:数组赋值完后,居然变了本帖最后由 cdhql 于 2013-04-26 15:27:59 编辑char buffer[10]char numa
菜鸟求教:数组赋值完后,居然变了
本帖最后由 cdhql 于 2013-04-26 15:27:59 编辑
char buffer[10];
char numa[6];
cin.getline(buffer,10);
buffer[9]='\0';
//get N
int n=0;
if(buffer[7]>'0' && buffer[7]<='9')
{
n=10*(buffer[7]-'0');
}
if(buffer[8]>='0' && buffer[8]<='9')
{
n+=buffer[8]-'0';
}
else
return 0;
buffer[6]='\0';
cout<<buffer<< " "<<strlen(buffer)<<endl;
//get '.'
int i=0,j=0;
int pointL=0;
for(;i!=7;i++)
{
if(buffer[i]=='.')
pointL=i;
else
numa[j++]=buffer[i];
}
numa[j]='\0';
cout<<buffer<< " "<<strlen(buffer)<<endl;
两次cout输出的buffer不同.一次有值,赋值完,输出为空,长度为0
找到原因:
numa[j]='\0';
请问大神 这是为什么 我的小脑袋就是想不通哇.......
[解决办法]
for(;i!=7;i++)
{
if(buffer[i]=='.')
pointL=i;
else
numa[j++]=buffer[i];
}
执行的如果都是else里的,上一轮的j++,导致j是7啊。
[解决办法]
你的输入是什么? buffer[9]='\0'有时不一定起作用,可能会提前遇到结束符。
