如何避免将nullchar转换为0?

时间:2019-05-03 08:20:15

标签: c++ atoi null-character

例如,我有一个用{'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';
 }

1 个答案:

答案 0 :(得分:4)

这里的问题是for循环中的条件。每次迭代后都会对该条件进行完全评估。这不仅意味着r<部分,还意味着strlen(number)部分。通常这是个坏主意-strlen必须检查整个字符串才能找到第一个\0。在非常特殊的情况下,这可能是有道理的,但在这里却没有。您要使用未经修改的原始字符串长度。

如果您对字符串的理解更好一些,您可能会意识到根本不需要r。您可以简单地将字符设置为\0,直到找到已经\0的字符为止。