struct Probleme (einlesen und ausgeben)
-
Daten ist bei dir auch ein Array.
Darum musst du auch das Element des Arrays mit angeben.
printf("Output: %d, %d\n",Daten[0].nummer,Daten[0].daten);
-
SeppJ schrieb:
Lass mich mal raten: In der Datei steht so etwas wie
123 456 789 123 765 421
?
fast genau so:
1 122
2 133
3 143
4 150
5 120
6 120
7 6Zuerst die Nummer und danach kommen die Daten.
-
DirkB schrieb:
Daten ist bei dir auch ein Array.
Darum musst du auch das Element des Arrays mit angeben.
printf("Output: %d, %d\n",Daten[0].nummer,Daten[0].daten);
Okay stimmt, danke. Aber der Input stimmt nicht mit dem Output zusammen.
Es kommen falsche bzw. andere Zahlen heraus
-
Der Output sieht so aus:
3
Erfolgreich gelesen:
Output: 9066284422,8084644928Also hier müsste wo der Fehler bei der Größe liegen oder?
Habe bei fopen r statt rb eingegeben, auch keine Verbesserung.
Danach habe probiert das Inputfile anzu passen auf:
1
2
3
4
...auch keine Besserung. buhhh
Hoffe einer von Euch kann mir helfen.
Danke
-
Benutz zum Lesen formatierter (d.h. menschenlesbarer) Zahlen (f)scanf, nicht (f)read. read packt den Inhalt so wie er ist an die Speicherstelle im Computer. Die Zeichenfolge "1 122" hat dann aber eine ganz andere Bedeutung als die Zahlenwerte 1 und 122.
-
Wenn die Daten im ASCII-Format vorliegen, kannst du fread dafür nicht nehmen.
fread kannst du nehmen, wenn die Daten in der Datei genau so stehen, wie sie im Speicher sind.
Du musst die Daten mit fscanf() einlesen (oder fgets und sscanf).
-
Hallo Leute,
dank euch.
Habe aber deshalb fread genommen weil er die struct als parameter gleich verarbeiten kann. wenn ich dies mit fgets mache, kommt jedoch die selben
komischen outputs heraus.
ich muss die struct nehmen, da diese teil des definierten interfaces ist.
hätte ich ein einfaches char-array, so würde dies auch gleich funktionieren.
die struct macht mir das leben schwer.struct
LG
-
Das liegt nicht am struct.
Das Problem hast du auch, wenn du einefache Variablentypen nimmst.Es war auch die Rede von fgets und sscanf.
Wie liest du Werte von der Tastatur ein?
-
DirkB schrieb:
Das liegt nicht am struct.
Das Problem hast du auch, wenn du einefache Variablentypen nimmst.Es war auch die Rede von fgets und sscanf.
Wie liest du Werte von der Tastatur ein?
genau mit fgets und sscanf oder getline.
normalerweise schreibe ich aber die werte in einen puffer[], der char enthält.
nicht in eine vordefinierte struct[] die nur 2 daten halten kann.sollte ich besser einfach nur mal einlesen und dann die werte in die struct schieben und nicht gleich direkt damit arbeiten?
-
fgets und sscanf oder getline.
FILE *datei = fopen ("/home/user/input.txt","rb"); struct data Daten[3]; unsigned int ret = 0; ret = fread (Daten, sizeof(struct data), 3, datei);
Genau hier liegt das Problem.
Könnte mir einer den Code bitte schreiben, wie ihr sowas machen würdet?
Vielleicht checke ich es dann.
-
Nimm doch einfach fscanf
-
SeppJ schrieb:
Nimm doch einfach fscanf
stimmt,das einfachste ist das beste. danke bin wohl auf der leiter gestanden.
danke für eure hilfe.
-
DirkB schrieb:
Du musst die Daten mit fscanf() einlesen (oder fgets und sscanf).
SeppJ schrieb:
Nimm doch einfach fscanf
O.k. Doppelt hält besser
-
s.luis schrieb:
SeppJ schrieb:
Nimm doch einfach fscanf
stimmt,das einfachste ist das beste. danke bin wohl auf der leiter gestanden.
fscanf ist nicht das Einfachste, ist eher eine gerade für Anfänger schwierig zu handhabende Funktion auch weil sie sehr mächtig ist.
-
Wutz schrieb:
s.luis schrieb:
SeppJ schrieb:
Nimm doch einfach fscanf
stimmt,das einfachste ist das beste. danke bin wohl auf der leiter gestanden.
fscanf ist nicht das Einfachste, ist eher eine gerade für Anfänger schwierig zu handhabende Funktion auch weil sie sehr mächtig ist.
Naja aber in diesem Fall schon. Weil sie funktioniert oder ich sie besser verstehe? Was solls es läuft
Danke an alle für eure Hilfe.