2012-03-25 14 views
0

Ich habe ein Programm, das Eingabe von einer einzelnen Zeile liest (String offensichtlich) und organisiert es in Arrays.Einfache C: atof geben falschen Wert

Das Problem, das ich habe, ist, dass an einem Punkt das Programm zwei verschiedene Werte liest und die erste zweimal zurückgibt. Anfangs dachte ich, dass das Programm den gleichen Wert zweimal lesen würde, aber als ich es getestet habe, stellte sich heraus, dass es das richtige bekommen hat, aber das falsche eingegeben hat.

zum Beispiel

Eingang: 2 0,90 0,75 0,7 0,65

leider schnippeln es

(while(fgets (string[test], sizeof(string[test]),ifp)) 
pch = strtok_r(NULL, " ", &prog); 
tem3 = atoi(pch); 
while (loop<tem3) 
{ 
    pch=strtok_r(NULL," ",&prog); 
    venseatfloat[test][loop][DISCOUNT][OCCUPIED]=(float)atof(pch); 
    printf("%f is discount\t",venseatfloat[test][loop][DISCOUNT][OCCUPIED]); 

    pch=strtok_r(NULL, " ", &prog); 
    strcpy(temp, pch); 
    venseatfloat[test][loop][REGULAR][OCCUPIED]=(float)atof(pch); 
    printf("%s is the string but %.3f is regular\n", temp ,venseatfloat[test][loop][DISCOUNT][OCCUPIED]); 
    loop++; 

} 

Ausgang:

>0.900000 is discount 0.75 is the string but 0.900 is regular 

>0.700000 is discount 0.65 is the string but 0.700 is regular 

Was ist los ?

Antwort

2

In der zweiten Lesung lesen Sie venseatfloat [test] [loop] [REGULAR] [BESETZT], aber printf'ing venseatfloat [test] [loop] [DISCOUNT] [OCCUPIED]. (Hinweis REGELMÄSSIG oder RABATT.)

+0

lol Chani

+0

Ughhhh wow. Ich bin ein Idiot. Es tut mir leid, dass ich aus deiner Zeit stiehl. Ich muss jetzt meinen Kopf an eine Wand hämmern. –

+1

@Doc, Wenn das wirklich die Lösung ist, dann müssen Sie die Antwort akzeptieren. –