Newbieproblem mit "fscanf"
-
also das hier funzt bei mir wunderbar:
int zahl; FILE *datei = fopen("zahlen.txt","r"); //die datei hat gefälligst du existieren =) while(fscanf(datei, "%d", &zahl)==1) printf("%d\n", zahl); fclose(datei);
anstatt die zahlen direkt auszugeben würdest du halt die werte in nem array speicher sortieren und dann erst ausgeben...
also etwa:int zahlen[100]; //ich gehe einfach davon aus das maximal 100 zahlen im file stehen int i=0; FILE *datei = fopen("zahlen.txt","r"); while(fscanf(datei, "%d", zahlen+(i++))==1); fclose(datei);
[ Dieser Beitrag wurde am 10.05.2003 um 22:59 Uhr von japro editiert. ]
-
Hey Japro...
Vielen Dank, dann probiere ich das mal so. Das ist genau das was ich brauche. Ich wusste nur nicht ob es das auch wirklich tut. Dann kann ich mich ja jetzt an die Sortierfunktion ran wagen...
Ich meld mich nochmal falls es immernoch nicht geht...
Vielen Dank, dass ihr mit den Fragen eines Grünlings so nett umgeht
-dis-
-
Weil mich die Funktion fscanf schon öfters generft hat, habe ich das Beispiel von japro noch mal eingegeben und ausporbiert... und ein wenig erweitert
#include <stdio.h> #include <conio.h> int main() { int zahl; FILE *datei = fopen("zahlen.txt","r"); //die datei hat gefälligst du existieren =) if(!datei) { printf("Die Datei konnte nicht geöffnet werden\n"); getch(); exit(0); } while(fscanf(datei, "%i;", &zahl)==1) printf("%i\n", zahl); fclose(datei); getch(); return 0; }
Im Formatstring von fscanf habe ich "%i;" geschrieben - das wäre eine mit Semikolon getrennte Datei. japro hat nur "i" benutzt, was wohl funktioniert, wenn man die einzelnen Zahlen in verschiedene Zeilen schreibt. Ich würde trotzdem dazu tendieren, das Schlußzeichen anzugeben. In Deinem Fall "%i\n" OHNE Leerzeichen! Sonst kann es wieder Probleme geben - vorallem wenn Du mal zwei Zahlen gleichzeitig auslesen willst
fscanf(datei, "%i\n%i\n", &i1, &i2);
Das mußte ich jetzt noch los werden...
Gruß
Poolplayer
-
alles Blödsinn, mit fscanf spricht man den Scanner an, wie der Name ja schon sagt.
-
Original erstellt von <Börni>:
alles Blödsinn, mit fscanf spricht man den Scanner an, wie der Name ja schon sagt.Was ist das denn für ein Müll ?? fscanf dient zum formatierten Einlesen von Daten aus einem Strom bzw. Stream (der z.B. eine Datei sein kann).
Wenn man sich allgemeine Syntax von fscanf mal anschaut:
int fscanf( FILE* Stream, const char* format, ... );
dann kann man wohl schon erkennen, dass man damit nicht den Scanner anspricht
Ausserdem kennt ANSI-C (Gruß an Shade ) keinen Scanner.
-
Reingefallen! Don't feed the troll(s)! (Themen rund...) scanf geht nicht
-
muhahahaha ... alt
-
Original erstellt von Dill:
muhahahaha ... altWieso? Es fällt immer wieder einer drauf rein.
-
.. und den rest nervts ... wie diese sinnlose diskussion hier
-
Naja auch ne Variante einen Thread ein wenig unübersichtlicher zu machen!
Ich habe es bereits gestern hin bekommen, auch das mit bubblesort, vielen Dank für Eure Hilfe.
-dis-