fscanf auslese Problem
-
Pretty schrieb:
Wenn Du schon zum RTFM'en ermahnst, poste wenigstens einen adäquaten Link dazu!
Bevor das hier ausartet, hier mal ein Link:
-
Jab bin grad beim C lernen und zwar mit Hilfe dieser Seite.
http://www.c-howto.de/tutorial-dateiverarbeitung-formatiertes-lesen-schreiben.html
Und dort wird der fscanf nicht so ausführlich erklärt.Was ich zum Zeilenweisen auslesen mit fscanf in Google gefunden hab hatte mir nicht sehr viel weitergeholfen aber jetzt weis ich auch wieso ich kaum was gefunden habe…
Vielen Dank für die Hilfe, von euch allen! Auch für den Link, werde mich mal an diese Funktion setzen. Und jetzt habe ich auch denn hier gefunden und werde da mal das "c von a bis z" ausprobieren, wenn das empfohlen wird.
http://www.c-plusplus.net/forum/134691
-
bleipumpe schrieb:
Und jetzt habe ich auch denn hier gefunden und werde da mal das "c von a bis z" ausprobieren, wenn das empfohlen wird.
Nein! Bücher und sonstiger Pfusch vom Autor JW wird hier ausdrücklich NICHT empfohlen aufgrund nachgewiesener Inkompetenz und schlichtweg Vermittlung von falschem Wissen.
-
Ääähm das steht direkt als erstes unter „Linkliste für Neulinge“
http://www.c-plusplus.net/forum/f10
und da steht "nur":"Edit by TactX: Das Buch "C von A bis Z" ist hier schon öfters wegen diverser Fehler aufgefallen. Dies sollte man im Hinterkopf haben wenn man das Buch liest und entsprechend kritisch hinterfragen (gilt natürlich für jede Veröffentlichung)."
Was sich aber längst nicht so eindeutig wie deine Aussage anhört.
Das sollte wohl dann eher gelöscht werden, anstatt vorsichtig daraufhin gewiesen.Gibt’s da nicht ein Buch wo ziemlich gut ist einfach aber vor allem ausführlich!? unter dem "Linkliste für Neulinge" sind nur immer wieder Bücher und links eingeworfen und teils sofort wieder kritisiert oder Dead-links etz.
Besonders hilfreich finde ich diesen "thread" nicht!
-
Tue was du nicht lassen kannst.
Ich gebe dir aber auf deinen Erfahrungstrip mit, dass nicht immer die Top-Google-Treffer die besten sind.
Hier im Forum gibt es genügend Beiträge zum Suchen nach brauchbaren Links und meist auch eine Bewertung dazu.
-
Das hast du wohl falsch verstanden ich habe nicht dich gemeint sondern ausschließlich diesen „Linkliste für Neulinge“ Thread.
Hat mir jemand ein Vorschlag für ein Tutorial o.ä.
-
Ich empfehle dir KEIN Online Tutorial.
Ich empfehle dir ein Buch (sowas aus Papier zum Umblättern) und dabei:Prinz/Prinz: "C - Einführung und professionelle Anwendung"
Und wenn es auch in Englisch sein darf:
Prata: "C Primer Plus 5th Edition"
Ich weiß nicht, was sich Herr "alt!!1 Unregistrierter" in der Linkliste dabei gedacht hat, den JW Pfusch zu empfehlen, wahrscheinlich hat er auch nur Google befragt.
Noch weniger verstehe ich, warum dieser offensichtliche Pfusch hier von den Moderatoren implizit empfohlen wird.
-
sowas gibts noch dachte die wären ausgestorben.
Danke für die buch empfelung, dann werde ich mir die mal zu gemüte ziehen!
Ich hoffe die kommen mal drauf andere werden sich das bestimmt extra hollen.
-
Moin moin,
ich sitze gerade mit einem Kommilitonen zusammen über einem Semesterprojekt und stehen vor folgendem Problem ... unser C-Programm funktioniert unter Codeblocks und xcode, allerdings müssen wir noch die Igel.h aus Visual Studio einbinden, sodass es natürlich auch darunter funktionieren muss und genau da ist der Haken.
Via Breakpoints haben wir schon rausgefunden, dass das Problem bei fscanf liegt, kommen aber einfach nicht auf die Lösung.
Wäre sehr nett, wenn sich jemand dessen annehmen und uns die Augen öffnen könnte.
Schonmal vielen Dank im voraus !Mit freundlichen Grüßen
Florianvoid IgelMain() { //Initialisierung und Deklaration FILE *Datei; struct Punkt *polygon1, *polygon2, *schnittliste; //testpunkte struct Punkt s1,e1,s2,e2, test2; char stringPfad[300]={}, current, stringPoly[100]={}; long pos; int iWahl=0, wechsel = 0, length1 = -1,length2 = -1, leer1 = 0, leer2 = 0, i, isSchnitt; double test = 1.0; open_console(); //Menue printf("\n ***********************************\n I ------ Hauptmenue ------ I\n I I\n I(1) Schnittflaeche berechnen I\n I(2) Programm beenden I\n I I\n ***********************************\n -> "); scanf("%i",&iWahl); fflush(stdin); if(iWahl==1) { //Textdatei mit den x- und y-werten der Polygone einlesen do { printf("\nBitte geben Sie den Dateipfad ein: "); scanf("%s",&stringPfad[0]); //Dateipfad wird als String in Varaible gespeichert Datei=fopen(&stringPfad[0],"r"); // Datei wird im lese-Modus geoeffnet if(Datei==NULL) printf("\nDatei leider nicht lesbar, bitte wiederholen Sie Ihre Eingabe !"); //Fehlerausgabe, wenn angegebene Datei nicht vorhanden ist }while(Datei==NULL); //***Einlesen der ersten Zeile der Datei in ein Array aus Punkten.*** //Länge der ersten Zeile und die Anzahl der Leerzeichen feststellen. do{ current = getc(Datei); length1++; if(current == 32) leer1++; }while(current != 0x0A); //Pos speichert den Wert des Anfangs der zweiten Zeile von Datei pos = ftell(Datei); //Dateipointer an den Anfang der Datei setzen //rewind(Datei); fclose(Datei); Datei=fopen(&stringPfad[0],"r"); //Speicherallokation für die Punkte des ersten Arrays und Zuweisung polygon1 = (struct Punkt*) calloc((leer1+1)/2,sizeof(struct Punkt)); for (i = 0; i < ((leer1+1)/2); i++){ fscanf(Datei,"%s",stringPoly); [b]//und genau hier liegt dann der Fehler[/b] polygon1[i].xvalue = atof(stringPoly); fscanf(Datei,"%s",stringPoly); polygon1[i].yvalue = atof(stringPoly); }
-
sicher, dass die datei geöffnet wird?
btw wäre eine fehlerbeschreibung evtl brauchbar und auch compilerwarnungen etc
-
datei wird geöffnet, nur wenn ich die erste zeile, in x- und y- werte getrennt, einlesen will, gibt er mir den fehler expression cannot be evaluated.
test datei sieht wie folgt aus ...
123.212 123123.0 123123 123123
11 22 33 44 11 22 33 44
-
Welche Werte haben denn pos, length1 und leer1?
Bei welchem i tritt der Fehler auf.Und wenn ich das sehe:
&stringPfad[0]
, dann weiß ich das ihr zwar nachgedacht aber nicht begriffen habt.
-
pos ist an der ersten stelle der zweiten zeile, length1 ist erstmal unwichtig, gibt aber die richtige anzahl aller zeichen der ersten zeile wieder ... leer1 ist die anzahl der leerzeichen und steht auf 3, so wie es soll ...
wie gesagt, das programm funktioniert nur unter visual studio 2010 nichtwas das &stringPfad[0] angeht, ich habe das [0] mal entfernt
edit: und es tritt schon beim ersten Schleifendurchgang auf
-
Mit welchem System habt ihr denn die Textdatei erstellt?
Schon malfopen
mit "rb" probiert?Und
&stringPfad[0]
ist gleichbedeutend mitstringPfad
. Ohne & und []
-
stimmt ... wenn man schon so viele stunden vor dem bildschirm sitzt, erkennt man nicht immer gleich alles
mit "rb" funktioniert es leider auch nicht und die txt ist mit wordpad erstellt
-
Und mit einem Leerzeichen vor dem %s ?
fscanf(Datei," %s",stringPoly);
Läuft das Code::Blocks unter Linux?
-
Schon bei K&R ist nachzulesen, dass Leerzeichen und Tabs in scanf Formatstrings ignoriert werden.
-
flomo's Daten sind zu lesen:
// Demo to read xy.csv // 2011jun28 #include <stdio.h> #include <stdlib.h> struct polygon1 { char xvalue[9]; char yvalue[9]; }stringPoly[7]; FILE *datei = NULL; int main() { int check; // how many strinds/char-arrays are read if (!(datei = fopen("xy.csv", "r"))) printf("can not read the file!\n"); else { for( int i = 0; i < 7; i++) { check = fscanf(datei, "%s %s \n", stringPoly[i].xvalue, stringPoly[i].yvalue); printf("read data: %d ", check); // 2 if this sample works fine printf("%12s %12s\n", stringPoly[i].xvalue, stringPoly[i].yvalue); } } fclose(datei); }
Die Rückgabewerte von fopen und fscanf geben schon mal Hinweise, wenn es klemmt.
Warum findet man das so selten in den Beispielen im Netz?Aber seine Zeilen 4 bis 11 sind ein wenig unübersichtlich. <- Mein Eindruck
MfG f.-th.