Я пытался преобразовать строку чисел в целочисленное значение со следующим кодом. Выход всегда на единицу меньше исходного значения. Я не понимаю, что не так с моим кодом.преобразовать числовую строку в целое значение
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
int main(){
char a[6];
int i,b;
scanf("%s",a);
for(i=strlen(a)-1;i>=0;i--){
a[i]=a[i]-48;
b=b+a[i]*pow(10,(strlen(a)-i-1));
}
printf("%d",b);
getch();
return 0;
}
Является ли назначение сделать преобразование самостоятельно? В противном случае используйте ['strtol'] (http://en.cppreference.com/w/c/string/byte/strtol). Также не используйте [* magic numbers *] (https://en.wikipedia.org/wiki/Magic_number_ (программирование)). Если на '48' вы имеете в виду символ' '0' ', тогда говорите об этом явно. –
Что касается вашей проблемы, здесь не нужно использовать 'pow', простое умножение с' 10'. –
Помимо неопределенного значения 'b', будем ли мы также предполагать, что отрицательные значения не являются опцией или значением больше 99999? – WhozCraig