当我尝试转换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 and string_1[4]=1
。
答案 0 :(得分:1)
您正在修改循环中的字符串,这意味着每次迭代调用strlen(string_1)
时条件不再有效(请记住strlen
查找字符串终止'\0'
,这是等于零以找到结束。)
要么获得一次之前的长度并将其放入您在条件中使用的变量中,要么使用另一个数组作为目标。