struct Probleme (einlesen und ausgeben)
-
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.