2015-06-07 3 views
-5

Когда я пытаюсь преобразовать 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.

+4

Даже если вы это заработаете, как вы собираетесь рассказать разницу между нулем в строке и завершающим нулем в результирующей строке? – samgak

ответ

1

Вы изменяете строку в цикле, что означает, что состояние больше не будет работать, как вы называете strlen(string_1) каждой итерации (помните, что strlen ищет окончания '\0' строки, которая равна нулю, чтобы найти конец).

Либо получите длину один раз раньше, и поместите ее в переменную, которую вы используете в состоянии, или используйте другой массив для назначения.

Смежные вопросы