Witam, piszę funkcje, która ma sprawdzać poprawność wprowadzanych danych(żeby zamiast liczb ktoś nie wpisał liter). "Na brudno" napisałem sobie coś takiego(może pięknie to nie wygląda, ale to taka prowizorka :) ).
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,licz=0;
double l;
char zp[256];
printf("Podaj ciag znakow: ");
scanf("%s",zp);
j=strlen(zp);
for(i=0; i<j; i++)
{
if(zp[i]!='-' && zp[i]!='0' && zp[i]!='1' && zp[i]!='2' && zp[i]!='3' && zp[i]!='4' && zp[i]!='5' && zp[i]!='6' && zp[i]!='7' && zp[i]!='8' && zp[i]!='9'&& zp[i]!='.')
licz++;
}
if(licz==0)
{
printf("Podales cyfry\n");
l=atof(zp);
}
else
printf("Podales litery");
printf("%lf", l);
return 0;
}
Mam problem z konwersją ciągu na double. Dev c++ na win7 za każdym razem wyświetla inną liczbę np 456131.000000. W unixie wyświetla się cały czas ta sama liczba, niezależnie od podanego ciągu. Co jest źle w tym kodzie?
Może ktoś ma inny pomysł, żeby sprawdzić poprawność wprowadzanych danych?(głównie chodzi o to że jak ktoś wpisze litery do double to program się nie wysypie tylko powie żeby wpisać jeszcze raz dane).