Для проблемы в школе мне нужно преобразовать ASCII-строку из цифр символов в десятичное значение. Я написал для этого функцию и указал тип возвращаемого значения unsigned short , как вы можете видеть в приведенном ниже коде.
#include <stdio.h>
unsigned short str_2_dec(char* input_string, int numel);
int main()
{
short input;
char input_string[6]= "65535";
input = str_2_dec(input_string, 5);
printf("Final Value: %d", input);
return 0;
}
unsigned short str_2_dec(char* input_string, int numel)
{
int factor = 1;
unsigned short value = 0;
int index;
for(index=0; index <(numel-1); index++)
{
factor *= 10;
}
for(index = numel; index > 0; index--)
{
printf("Digit: %d; Factor: %d; ", *(input_string+(numel-index))-48, factor);
value += factor * ((*(input_string+(numel - index))-48));
printf("value: %d\n\n", value);
factor /= 10;
}
return value;
}
При запуске этого кода программа выводит -1
в качестве конечного значения вместо 65535
. Похоже, он отображает соответствующее значение со знаком в любом случае. Кажется, что-то очень простое, но я не могу найти ответ. Ответ будет принята с благодарностью.