-7

{'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';
 }
4

1 回答 1

4

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

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

于 2019-05-03T09:20:42.207 回答