18 if(strchr(str,
'.')!=NULL)
return(0);
19 if(strchr(str,
',')!=NULL)
return(1);
32 if(strchr(str,
'.')!=NULL)
return(1);
33 if(strchr(str,
',')!=NULL)
return(2);
47 cptr=strchr(str,
'.');
if(cptr!=NULL && decsep==1) {*cptr=
',';
return;}
48 cptr=strchr(str,
',');
if(cptr!=NULL && decsep==0) {*cptr=
'.';
return;}
66 if(str==NULL)
return(nan(
""));
68 if(strchr(str,
'.')!=NULL)
return(atof(str));
71 cptr=strchr(str,
',');
if(cptr!=NULL) *cptr=
'.';
72 f=atof(str);
if(cptr!=NULL) *cptr=
',';
86 if(str==NULL)
return 0;
89 while(*cptr!=
'.' && *cptr!=
',') {
90 if(*cptr==(
char)0 || *cptr==
'E' || *cptr==
'e')
return 0;
93 if(*cptr==(
char)0 || (*cptr!=
'.' && *cptr!=
','))
return 0;
95 cptr++; n=0;
while(cptr!=NULL && isdigit(*cptr)) {n++; cptr++;}
109 char *double_as_string,
116 if(result_value!=NULL) *result_value=nan(
"");
117 if(double_as_string==NULL)
return(1);
119 if(f!=0.0) {
if(result_value!=NULL) *result_value=f;
return(0);}
120 cptr=double_as_string;
121 while(*cptr!=0 && (*cptr==
'+' || *cptr==
'-' || *cptr==
' ')) cptr++;
122 if(*cptr==
'0') {
if(result_value!=NULL) *result_value=f;
return(0);}
142 unsigned int i, j, n=0;
145 if(str==NULL || strlen(str)<1) {*nxtp=NULL;
return NULL;}
149 i=strcspn(cptr,
"+-0123456789");
if(i==strlen(cptr)) {*nxtp=NULL;
return NULL;}
152 if(i>0) {cptr=strt-1; i=strcspn(cptr,
" \t,;");
if(i>0) cptr+=i;}
155 cptr=strt;
if(*cptr==
'-' || *cptr==
'+') {n++; cptr++;}
157 i=strspn(cptr,
"0123456789"); n+=i;
158 if(i<1) {*nxtp=cptr;
return NULL;}
161 i=strspn(cptr,
",.");
163 *nxtp=cptr;
return strt;
165 *nxtp=cptr;
return strt;
169 i=strspn(cptr,
"0123456789");
171 *nxtp=cptr-1;
return strt;
175 if(*cptr==
'E' || *cptr==
'e') i=1;
else i=0;
177 if(i==0) {*nxtp=cptr;
return strt;}
180 if(*cptr==
'-' || *cptr==
'+') {cptr+=1; i++;}
182 j=strspn(cptr,
"0123456789");
184 *nxtp=cptr-i;
return strt;
192int test_strPtrToNextValue()
194 char *cptr, *cptr2=NULL, tmp[256];
197 static char *tests[] = {
203 "65s, 44.3min m44m b7,7 c1,2,3 43.2",
206 "-1.2345E-009 0.23 434.1 +65 +2.3E2",
207 "-1.2345E-009,0.23,434.1,+65,+2.3E2",
208 "-1.2345E-009, 0.23, 434.1, +65, +2.3E2",
209 "-1,2345E-009;0,23;434,1;+65;+2,3E2",
210 "-1.2345E-009 0.23 434.1 +65 +2.3E2",
214 j=0; printf(
"Test %d:\n", 1+i); printf(
" test_string := '%s'\n", tests[i]);
217 n=strlen(cptr);
if(cptr2!=NULL) n-=strlen(cptr2);
218 strncpy(tmp, cptr, n); tmp[n]=(char)0;
219 printf(
" valstring[%d] := '%s'\n", 1+j, tmp);
220 if(cptr2==NULL)
break;
240 const char *int_as_string,
246 if(result_value!=NULL) *result_value=0;
247 if(int_as_string==NULL)
return(1);
248 len=strlen(int_as_string);
if(len<1)
return(1);
250 i=strspn(int_as_string,
"+-");
252 if(i==1 && len==1)
return(1);
254 for( ; i<len; i++)
if(!isdigit(int_as_string[i]))
return(1);
256 if(result_value!=NULL) *result_value=atoi(int_as_string);
260int test_atoi_with_check()
267 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
268 if(ret==0) {printf(
"Wrong result.\n");
return(1);}
272 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
273 if(ret==0) {printf(
"Wrong result.\n");
return(1);}
275 strcpy(temp,
"a123");
277 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
278 if(ret==0) {printf(
"Wrong result.\n");
return(1);}
282 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
283 if(ret!=0 || v!=1) {printf(
"Wrong result.\n");
return(1);}
287 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
288 if(ret!=0 || v!=0) {printf(
"Wrong result.\n");
return(1);}
290 strcpy(temp,
"123a");
292 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
293 if(ret==0) {printf(
"Wrong result.\n");
return(1);}
295 strcpy(temp,
"+123");
297 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
298 if(ret!=0 || v!=123) {printf(
"Wrong result.\n");
return(1);}
302 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
303 if(ret!=0 || v!=-2) {printf(
"Wrong result.\n");
return(1);}
307 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
308 if(ret==0) {printf(
"Wrong result.\n");
return(1);}
310 strcpy(temp,
"-2.3");
312 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
313 if(ret==0) {printf(
"Wrong result.\n");
return(1);}
315 strcpy(temp,
"3,14");
317 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
318 if(ret==0) {printf(
"Wrong result.\n");
return(1);}
320 strcpy(temp,
"-2E2");
322 printf(
"atoi_with_check('%s', %d) := %d\n\n", temp, v, ret);
323 if(ret==0) {printf(
"Wrong result.\n");
return(1);}
int atof_with_check(char *double_as_string, double *result_value)
void dec_separator_change(char *str, int decsep)
double atof_dpi(char *str)
int atoi_with_check(const char *int_as_string, int *result_value)
char * strPtrToNextValue(char *str, char **nxtp)
int dec_comma_is(char *str)
int dec_separator(char *str)
Header file for libtpcmisc.