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: 0

    Vielleicht weiss jemand von euch weiter.

    Vielen Dank.
    Andi



  • Der format specifier für float ist nicht %d .

    man: printf



  • Danke Danke...manchmal sieht man den Wald vor lauter Bäumen nicht


Anmelden zum Antworten