#include #include #include "message.h" int readfloat(fp,n,f) /*return 1 if field is not empty, 0 if empty, -1 if end of record, -2 if EOF */ FILE *fp; int n; float *f; { char *string,c; int i,status,firstc,lastc; string=(char *)malloc(n+1); status=1; firstc=-1; lastc=n+1; for(i=0;ifirstc&&lastc==n+1) lastc=i-1; if(i>lastc&&c!=' ') STOP(readfloat: illegal field 1); if(i==firstc&&c=='+') {string[i]=' ';firstc++;} if(c=='E'||c=='D'||c=='d') string[i]='e'; if(c=='\n') return(-1); if(c<0x30&&c>0x39&&c!=' '&&c!='-'&&c!='+'&&c!='.'&&c!='e') STOP(readfloat: illegal field 2); } string[n]='\0'; if(firstc==-1) status=0; sscanf(string,"%f",f); free(string); return(status); }