Как можно реализовать поиск не цифровых символов в строке?(кроме '.' , ',')
Допустим имеем код аля
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);
}
}
Просто убеждаемся, что все символы преобразованы. Не должно быть ничего лишнего, даже обычного пробела, после завершения числа.