Hallo
Folgendes will ich machen:
In einer Datei stehen Double Werte (zum Beispiel 1.82e-08). Mit diesen Werten will ich rechnen. Ich will dazu die ganzen Werte in einem Vektor speichern (also zum Beispiel werte) und dann folgender Maßen darauf zugreifen können:
1. eingelesene Zahl wird in werte[0] gespeichert
2. eingelesene Zahl wird in werte[1] gespeichert
...und so weiter.
Ich kann im Quelltext direkt ja auch sagen werte[0]=1.82e-08
Ich weiß nur nicht, wie ich den Wert erstens als double Wert deklarier (hab bis jetzt am Anfang einfach nur "double werte" stehn) und zweitens weiß ich nicht, wie ich den Wert aus der Datei übernehme, denn mit "fgets(werte[0], 8, DATEINAME)" scheints nicht zu klappen. Da kommt der Fehler "incompatible types in assignment"
Ich kann lediglich den ganzen Vektor damit belegen: "fgets(werte, 8, DATEINAME)" - aber dann ist das alles nur ne Zeichenkette.
Könnt ihr mir helfen?
Seite 1 von 1
C Programmierung: Double Wert Aus Datei Einlesen
Anzeige
#2
geschrieben 19. Juni 2006 - 10:49
In der Datei steht die Zahl also als Text, richtig? Also wenn du sie mit Notepad oder nem anderen Texteditor öffnest, kannst du sie lesen?
Dann musste sie in ner Stringvariable einlesen und mittels atof() umwandeln.
So in der Art (ungetestet, schlimm formatiert und ohne jeden Rangecheck):
Dann musste sie in ner Stringvariable einlesen und mittels atof() umwandeln.
So in der Art (ungetestet, schlimm formatiert und ohne jeden Rangecheck):
FILE * pFile;
char temp[100];
int i=0;
pFile = fopen ("myfile.txt" , "r");
if (pFile == NULL) perror ("Error opening file");
else
{
while(!feof(pFile)
{
fgets (temp , 100 , pFile);
werte[i]=atof(temp);
i++;
}
fclose (pFile);
}
Dieser Beitrag wurde von Lofote bearbeitet: 19. Juni 2006 - 10:50
#3
geschrieben 19. Juni 2006 - 10:58
vielen Dank. Grundsätzlich scheint es "etwas" zu funktionieren. Aber der Wert wird radikal abgerundet. Die Zahl, die ich jetzt benutzt hatte lautete: 4.90e+05
Nachdem ich die mit atoi umgewandelt hatte, wurde sie auf 4.00e+00 gestutzt.
Kann man das ganze nicht vielleicht auch gleich als double Zahl einlesen?
mfg
Nachdem ich die mit atoi umgewandelt hatte, wurde sie auf 4.00e+00 gestutzt.
Kann man das ganze nicht vielleicht auch gleich als double Zahl einlesen?
mfg
#4
geschrieben 19. Juni 2006 - 11:47
Also mit atof wandelt er nen Text in Double um und mit atoi in Integer (also Gerade Zahl ohne Kommastelle)
Du musst also atof benutzen nicht atoi.
Du musst also atof benutzen nicht atoi.
(\_/)
(O.o)
(> < ) This is Bunny. Copy Bunny into your signature to help him on his way to world domination
(O.o)
(> < ) This is Bunny. Copy Bunny into your signature to help him on his way to world domination
#5
geschrieben 19. Juni 2006 - 13:38
Ah ja - klappt... danke
(Wieder was dazu gelernt... hab den Befehl vorher einfach nicht verstanden)
(Wieder was dazu gelernt... hab den Befehl vorher einfach nicht verstanden)
Thema verteilen:
Seite 1 von 1

Hilfe
Neues Thema
Antworten
Nach oben


