[C] strtod liefert falsches Ergebnis

Jadephoenix24

Grünschnabel
Hi alle miteinander,

Ich habe ein kleineres Problem mit ANSI-C und zwar liefert strtod() bei mir ein falsches Ergebnis. Das einzige was mir einfällt ist dass die Zahl zu groß ist, respektive zu viele Nachkommastellen hat. Aber okay schaut selbst vielleicht fällt ja wem was ein:

Code:
char sigma[28];
	char rho[28];

    SIGMA_FILE = fopen("SIGMA.txt", "rb");
	RHO_FILE = fopen("RHO.txt", "rb");
	if (RHO_FILE == NULL){
		printf("öffnen von RHo geht nicht");
	}
    int counter = 0;
    char *b;
	int blub = sigma_length(RHO_FILE);
    double sigma_values[sigma_length(SIGMA_FILE)];
	double rho_values[blub];
	fseek(SIGMA_FILE, 0, SEEK_SET);
    while (!feof(SIGMA_FILE)){
        fgets(sigma, sizeof(sigma), SIGMA_FILE);
		if (counter < 25){
			printf("gelesener Wert = %s", sigma);
		}
        sigma_values[counter] = strtod(sigma, &b);
    counter ++;
    }
    counter = 0;
	while(!feof(RHO_FILE)){
		fgets(rho, sizeof(rho), RHO_FILE);
		rho_values[counter] = strtod(rho, &b);
		counter ++;
	}
Problem ist jetzt dass er bei sigma durchaus den richtige Wert einliest (1.3047925179262163e-002) Allerdings in sigma_values[0] nachher 1.037042e-001 drinsteht.
Also falls jemand weiß worans liegt vielen Dank schonmal im voraus.

mfg

Jadephoenix


EDIT: Benutze ich getrennte counter in den beiden schleifen gehts. Nur warum? Will mir irgendwie nicht so wirklich einleuchten
 
Zuletzt bearbeitet:
Zurück