Newbieproblem mit "fscanf"
-
Also mit dem was du mir geschrieben hast, so ähnlich habe ich das auch gemacht, nur nicht mit einer Variablen i, sondern mit einem Feld. Ich habe mal deine Variante ausprobiert, aber so ging das auch nicht... Also das erste Zeichen zeigt er mir noch an, da kommt die 130 und wenn ich dann i, bzw den Zeiger von i inkrementiere, dann komm ich irgendwo im Speicher hin, aber nicht auf die nächste Zahl, das ist ja mein Problem was ich habe!
Hier mal mein Programm, um erstmal nur Zahl für Zahl einzulesen, die Schleife fehlt noch, weil ich ja eben nicht weiss, was ich inkrementieren muss:
void main() { FILE *dz; int Dezimal[20]; if((dz=fopen("unsort.txt","r"))==NULL) { printf("\aFile not found! \n"); } else { fscanf(dz,"%d \n", Dezimal); printf("%d \n",Dezimal[0]); } fclose(dz); }
Es wird mir dann die 130 ausgegeben, aber wenn ich statt "Dezimal[0]" "Dezimal[1]" eingebe, also die eigentlich die nächste Zahl die ich will aus der Datei, kommt wüstes Zeug raus...wie realisiere ich, dass ich praktisch Zahl 130 an die erste Stelle des Feldes schreibe, Zahl 2 an die zweite Stelle des Feldes usw.? Also was muss inkrementiert werden?! Oder funktioniert mein Ansatz in der Form nicht?
-dis-
[ Dieser Beitrag wurde am 10.05.2003 um 22:27 Uhr von Disgrace editiert. ]
-
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-