Как можно реализовать поиск не цифровых символов в строке?(кроме '.' , ',')

Допустим имеем код аля

char str[];
int s = 0;
printf("Enter symbol set");
fgets(str, sizeof(str), stdin);
while(str[s] != '\0'){

    if(str[s] == "Описание не цировых символовов"){
        printf("Not a number in the term");
    }
    ++s;

}

Вопрос в том как именно можно находить не цифры в строке, совсем не могу найтик как это сделать и сам додуматься тоже(


Ответы (1 шт):

Автор решения: Harry

Решаем задачу "как забить гвоздь", а не "какой рукой держать микроскоп при забивании гвоздя"...

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

double getPositiveDouble(const char * s, int*error)
{
    char * end;
    double x = strtod(s,&end);
    if (error)
    {
        *error = (*end || x == HUGE_VAL || x < 0);
        // Или иная (например, с помещением кода ошибки
        // в error) обработка ошибки. Если нужна :)
    }
    return x;
}


int main(int argc, char * argv[])
{
    const char * s[] = { "123.456"," 345.3e2", "121rf", "1234.88 ", "-125" };
    for(int i = 0; i < sizeof(s)/sizeof(s[0]); ++i)
    {
        int error;
        double x;
        x = getPositiveDouble(s[i],&error);
        printf("s = [%s], x = %lf, error = %d\n",s[i],x,error);
    }
}

Просто убеждаемся, что все символы преобразованы. Не должно быть ничего лишнего, даже обычного пробела, после завершения числа.

→ Ссылка