Thanks for any hints.
Regards
Michal Lijowski
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
// -------------------------------------------------------------------------
int getfloats(char *tmpstr, float *aa)
// extracts up to 10 floating point numbers from a string
{
int SLEN = 40;
char cc[2], str1[SLEN];
int sl = strlen(tmpstr);
printf("%4d %s", sl, tmpstr);
cc[0] = tmpstr[0];
int jj = 0;
int ii = 0;
while ( (ii < 10) && (jj < sl) ) {
str1[0] = '\0';
while ( (cc[0] != ' ') && (jj < sl) ) {
strncat(str1, cc, 1);
jj++;
cc[0] = tmpstr[jj];
}
aa[ii] = atof(str1);
ii++;
// skip white spaces
while ( (cc[0] == ' ') && (jj < sl) ) {
jj++;
cc[0] = tmpstr[jj];
}
}
return ii;
}
// ---------------------------------------------------------------------
void test_read()
{
char infile[200];
float aa[10];
int SLEN = 80, nn;
char tmpstr[SLEN], str1[20], cc[2];
sprintf(infile, "tmp.dat");
printf("%s\n", infile);
FILE *infp = fopen(infile, "r");
if (infp == NULL) {
printf("test_read2b can't open %s\n", infile);
exit(1);
}
int npts = 0;
// loop until EOF
while (fgets(tmpstr, SLEN, infp) != NULL) {
printf(" %s", tmpstr);
nn = getfloats(tmpstr, aa);
for (int ii = 0; ii < nn; ii++) {
printf(" %f ", aa[ii]);
}
printf("\n");
npts++;
}
fclose(infp);
}
A few lines of numbers from tmp.dat file.
0 318.52
1 318.51
2 318.51
3 318.50
4 318.50
5 318.49
6 318.48
7 318.47
8 318.46
9 318.45