Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
underberg JLI'ler
Anmeldedatum: 11.01.2003 Beiträge: 153
Medaillen: Keine
|
Verfasst am: 25.06.2003, 17:17 Titel: Blödes Problem bei fscanf |
|
|
Code: |
char LevelName[200];
[..]
fscanf(datei,"%s",&LevelName);
writetext(215,524,LevelName);
|
In der Datei steht "Testname Name"...
Er gibt aber bloß "Testname" aus...
Das hinter dem Leerzeichen fehlt...
Weiß jemand woran das liegt??? |
|
Nach oben |
|
|
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 25.06.2003, 17:47 Titel: |
|
|
Mit fgets funktioniert es bei mir
Probier mal mit fgets. Oder muss es fscanf sein? _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
underberg JLI'ler
Anmeldedatum: 11.01.2003 Beiträge: 153
Medaillen: Keine
|
Verfasst am: 25.06.2003, 18:20 Titel: |
|
|
nepomuk hat Folgendes geschrieben: | Mit fgets funktioniert es bei mir
Probier mal mit fgets. Oder muss es fscanf sein? |
Wenn du mir die obige so umschreibst das es mit fgets geht, nehm ich auch die... |
|
Nach oben |
|
|
Mr.X Junior JLI'ler
Anmeldedatum: 15.04.2003 Beiträge: 88
Medaillen: Keine
|
Verfasst am: 25.06.2003, 18:21 Titel: ... |
|
|
probier mal:
Code: |
fscanf(datei,"Testname %s",&LevelName);
|
Dann müsste Levelname = "Name" sein, wenn ich mich nicht irre!
Nachtrag:
Code: |
fscanf(datei,"%s %s",&Name1,&Name2);
|
Hier müsste Variable "Name1" = "Testname" sein, und Variable "Name2" = "Name"!
Zuletzt bearbeitet von Mr.X am 25.06.2003, 18:28, insgesamt einmal bearbeitet |
|
Nach oben |
|
|
Mr.X Junior JLI'ler
Anmeldedatum: 15.04.2003 Beiträge: 88
Medaillen: Keine
|
Verfasst am: 25.06.2003, 18:24 Titel: ... |
|
|
P.S.: fgets liefert Dir die komplette Zeile:
Code: |
LevelName = fgets(datei,255);
|
(oder so ähnlich )
Dann würde die Variable "Testname Name" enthalten! |
|
Nach oben |
|
|
The Lord of Programming Living Legend
Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 25.06.2003, 20:08 Titel: |
|
|
Sonst kannst dus auch im Binärformat machen(siehe Scriptsprachentut auf meiner Hp) _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 25.06.2003, 20:59 Titel: |
|
|
Benutzt denn hier kein Schwein die STL? So einfach geht das. ;)
Code: |
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
string line;
ifstream input("datei.txt");
getline(input, line);
cout << line;
}
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 25.06.2003, 21:01 Titel: |
|
|
Und wenn man einzelne Werte einlesen will, macht man das am einfachsten so:
Code: |
player.bmp
32
64
6
0.2
LOOP
|
Code: |
#include <iostream>
#include <fstream>
using namespace std;
void main()
{
string bitmap, type;
int width, height, frames;
float delay;
ifstream input("test.txt");
input >> bitmap >> width >> height >> frames >> delay >> type;
}
|
_________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
gl_echse JLI'ler
Anmeldedatum: 01.01.2003 Beiträge: 105
Medaillen: Keine
|
Verfasst am: 26.06.2003, 16:02 Titel: |
|
|
Tja, es gibt immernoch die kleinen Kinder die c mit soße coden;) Nehmt doch streams (wie Hazel). Ist das so schlimm mal keine billighacks zu verwenden? |
|
Nach oben |
|
|
Starwash Senior JLI'ler
Alter: 39 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 26.06.2003, 18:29 Titel: |
|
|
Hi,
um wenigstens nochmal klar auf den Tisch zubringen, warum fscanf nur den ersten Teil des Strings einliest.
Dies liegt daran, wie inzwischen wahrscheinlich unschwer zu erkennen ist daran, dass jegliche scanf-Funktionen ein Leerzeichen als Token interpretieren.
Dies kann Nachteile haben, wie weiter oben von underberg erwähnt, kann aber auch Vorteile haben...
bspw:
Code: | int w,h,d;
scanf("%i",&w);
scanf("%i",&h);
scanf("%i",&d); |
Um bspw. Auflösung einzulesen...
Und so könnte der Benutzer dies dann eingeben
und dann erst nach dem dritten Wert mit Enter die Eingabe beenden, so erhalten die nachfolgenden scanf ihr Werte.
Gruss Tarek |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 27.06.2003, 15:59 Titel: |
|
|
Starwash hat Folgendes geschrieben: | Dies liegt daran, wie inzwischen wahrscheinlich unschwer zu erkennen ist daran, dass jegliche scanf-Funktionen ein Leerzeichen als Token interpretieren. |
Nope. Leerzeichen werden als Delimiter interpretiert, also als Trennzeichen zwischen den Tokens. Ich hab mir mit Hilfe der STL einen Tokenizer geschrieben, bei dem man selber bestimmen kann, was ein Delimiter ist und was nicht. Die Funktion liefert dann einen Vektor mit allen Tokens zurück. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Starwash Senior JLI'ler
Alter: 39 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 28.06.2003, 10:25 Titel: |
|
|
Oh,
shit....da hab ich was verwechselt! => Nochmal nachlesen, um es wieder zu festigen!
Ich meinte jedoch natürlich Trennzeichen, wie ja auch aus dem Rest meines Posts hervorgehen dürfte.
*Ärger*
Gruss Tarek |
|
Nach oben |
|
|
|