例如,我有一个用{'1','0','0','0'}
填充的char数组,我在该数组上应用atoi()
,它返回1000
,即true
,但是我重置了将数组元素设置为null char '\0'
并用50
重新填充数组并再次应用atoi()
,它不会输出50
而是5000
。
char number[10]={};
num = atoi(number);
customer[i].balance = customer[i].balance + num;
cout<<"I added the deposit"<<endl;
cout<<customer[i].balance<<endl;
num = 0;
for (int r=0; r<strlen(number); r++)
{
number[r]='\0';
}
答案 0 :(得分:4)
这里的问题是for循环中的条件。每次迭代后都会对该条件进行完全评估。这不仅意味着r<
部分,还意味着strlen(number)
部分。通常这是个坏主意-strlen
必须检查整个字符串才能找到第一个\0
。在非常特殊的情况下,这可能是有道理的,但在这里却没有。您要使用未经修改的原始字符串长度。
如果您对字符串的理解更好一些,您可能会意识到根本不需要r
。您可以简单地将字符设置为\0
,直到找到已经\0
的字符为止。