atof / strtod gibt falsche Werte zurück
-
Hallo,
bin gerade dabei eine funktion zu schreiben welche, ein 2 Dimensionles Array mit Werten füllen soll. Diese Werte werden aus einer TXT Datei ausgelesen. Nun will ich die ausgelesenen Strings mit Hilfe von atoi oer strtod in double Werte konvertieren. Doch leider geben mir diese Funktionen immer die falschen Werte zurück. Ich weiss einfach nicht wo das Problemm liegt....
Hier ein ausschnit aus meinem code.void matrixwrite(const char *filename, int *zeilen, int *spalten){ FILE *quelle; int i,j; char puffer[BUF]; char *result; double tmp; if((quelle=fopen(filename,"r")) == NULL) { fprintf(stderr,"Kann %s nicht oeffnen\n",filename); exit (0); } i=0; j=0; while(fgets(puffer,BUF,quelle) != NULL) { result = strtok( puffer, " " ); while(result != NULL) { if (j == 5) { j=0; i++; } printf("result is: %s\n", result); tmp = atof(result); printf("tmp:%d\n", tmp); matrix[i][j]=tmp; printf("Matrix-Wert: %d\n", matrix[i][j]); result = strtok( NULL, " " ); j++; }
beim ausführen des Programms erhalte ich folgende Ausgabe
result is: 670777.74
tmp:2061584302
Matrix-Wert: 2061584302
result is: 5141887.16
tmp:-901943132
Matrix-Wert: -901943132
result is: 946.50
tmp:0
Matrix-Wert: 0Vielleicht weiss jemand von euch weiter.
Vielen Dank.
Andi
-
Der format specifier für float ist nicht
%d
.
-
Danke Danke...manchmal sieht man den Wald vor lauter Bäumen nicht