Найти все цифры в строке и вычислить сумму этих цифр - C (СИ)

Формулировка задачи:

Все Работает если вводить без пробелов, но с пробелом выводится только первое число, (если можно с кратким объяснением пожалуйста)
#include <stdio.h>
#include <string.h>
 
 
int main(){
 
    char str[100];
    int x = 0;
    scanf("%s", str);
    for(int i = 0;i < strlen(str);i++)
    {
        if((str[i] >= '1') && (str[i] <= '9'))
        {
            x += ((int)str[i] - 48);
           
        }
    }
    printf("%d", x);
 
    return 0;
}

Код к задаче: «Найти все цифры в строке и вычислить сумму этих цифр - C (СИ)»

textual
#include <ctype.h>
#include <stdio.h>
#define SIZE 256
 
int main(void)
{
    char str[SIZE], *p;
    unsigned sum = 0;
    fgets(str, SIZE, stdin);
    for (p = str; *p; p++)
        if (isdigit(*p))
            sum += *p - '0';
    printf("%u\n", sum);
    return 0;
}

8   голосов, оценка 3.875 из 5


СОХРАНИТЬ ССЫЛКУ