atoi()
не делает то, что вы думаете, делает.
Возможный способ достичь того, что вы хотите, - использовать atoi()
или лучше strtol()
для преобразованияпользователь вводит целочисленный тип, а затем с помощью оператора по модулю извлекает каждую цифру и добавляет их.
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
int main(void){ //correct signature
int total=0; // no need to be global
char numstr[100] = {0}; // same
int ret = -1;
printf("Num:");
ret = scanf("%99s",numstr);
if (ret != 1){ // basic sanity check for scanf
printf("Error in scanning\n");
exit (-1);
}
long int converted = strtol(numstr, NULL, 10); // convert to integer
printf("%ld\n\n", converted);
for (int i = 0; converted; i++){
total += converted %10; // add the digit
converted /= 10; // reduce the last added digit
}
printf("%d",total);
return 0; // return 0 is implicit for `main()`, anyways
}