当我尝试使用下面的代码转换 string_1="20001"时,我得到数组:string_1[0]=2 和 string_1[1]=0。这背后的原因是什么?当它是“20125”时,可以,但是当它超过一个零时,就不行了。
for(j=0;j<strlen(string_1);j++)
{
string_1[j]=(string_1[j]-8)%10;
}
我期望得到的是:string_1[0]=2、string_1[1]=0、string_1[3]=0、string_1[3]=0 和 string_1[4]=1
.
最佳答案
您正在循环中修改字符串,这意味着当您每次迭代调用 strlen(string_1)
时,条件不再起作用(请记住,strlen
会查找字符串终止符 '\0'
等于 0 来查找结束)。
要么之前获取一次长度并将其放入您在条件中使用的变量中,要么使用另一个数组作为目标。
关于将数字字符串转换为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30693282/