Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 05.02.2006, 21:42 Titel: Seltsames Verhalten von fscanf() |
|
|
Hey,
ich versuche aus einer Text-Datei 3 Variablen auszulesen.
Der Anfang der Text-Datei sieht also wie folgt aus:
Shuffle 1
Volume 100
Repeat 1
Wenn ich nun mit fscanf() die ersten beiden Variablen ausgelesen habe, und die 3. Variable anfange auszulesen, werden die Werte der Variablen Shuffle und Repeat wieder auf 0 gesetzt.
Hier sind die zugehörigen Bilder vom Debuggen:
und
Das ist mir ein einziges Rätsel ....[/cpp] _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 06.02.2006, 16:16 Titel: |
|
|
Wie genau ist die Datei aufgebaut aus der du liest? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 06.02.2006, 16:47 Titel: |
|
|
Eine ganz normale Textdate ...
Hier der Inhalt:
Shuffle 1
Volume 100
Repeat 1
< C:\C++\Entwicklung\Lost Bird\Erica\Erica\Incubus - Morning View\02 Circles.mp3
< C:\C++\Entwicklung\Lost Bird\Erica\Erica\Incubus - Morning View\13 Aqueous Transmission.mp3
(Es werden dann immer mehr lieder nach dem oben stehendem Schema aufgelistet) _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 06.02.2006, 16:53 Titel: |
|
|
Wieso speicherst du die Strings, repeat, shuffle und volume überhaupt in der Datei ab wenn du sie sowieso nicht brauchst
Ansonsten:
CPP: | fscanf(pfile, "%s %d\n",stringBuffer, &m_mp3Shuffle); |
PS: wieso stellst du screenshots davon ins Forum? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 06.02.2006, 16:56 Titel: |
|
|
Hab's nun hinbekommen
Hatte als Datentyp short verwendet ..
Wahrscheinlich hat der dan die zuwenig Bytes reserviert, und auf den speicher geschrieben, der für die nächste Zahl schon reserviret war.
Aber das da keine Fehlermeldung vom Compiler kam -- nenene ;( _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 06.02.2006, 16:56 Titel: |
|
|
Man hört ja immer das scanf net so Optimal ist. Ich benutze ja imemr ini Dateien, die sind eingentlich ganz ok.
GetPrivateProfileString heißt die entsprechende windowsfunktion mit der du das ganz easy machen kannst. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 06.02.2006, 17:00 Titel: |
|
|
(Gerade deine Post gelesen)
Scrennshots zum verdeutlichen des Problems (also vom Debug-Vorgang) fand ich angemessen - ich meine, warum nicht !?
Das mit dem Zwischenspeichern -- hmm fand ich bissher zum weiterhebeln des Positions-Zeigers relativ angenehm
@GetPrivateProfileString
Werde mich mal drüber informieren _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
PeaceKiller JLI Master
Alter: 36 Anmeldedatum: 28.11.2002 Beiträge: 970
Medaillen: Keine
|
Verfasst am: 06.02.2006, 17:36 Titel: |
|
|
Mat hat Folgendes geschrieben: | Hab's nun hinbekommen
Hatte als Datentyp short verwendet ..
Wahrscheinlich hat der dan die zuwenig Bytes reserviert, und auf den speicher geschrieben, der für die nächste Zahl schon reserviret war.
Aber das da keine Fehlermeldung vom Compiler kam -- nenene ;( |
Weil scanf nicht typsicher ist! _________________ »If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine |
|
Nach oben |
|
|
proggaholic Junior JLI'ler
Alter: 36 Anmeldedatum: 07.05.2005 Beiträge: 85 Wohnort: Heap Medaillen: Keine
|
Verfasst am: 03.05.2006, 17:02 Titel: |
|
|
Mal nen Tipp zu der fscanf()-Geschichte: Benutz besser fgets() und konvertiere anschließend die Daten, die eingelesen wurden, mit sscanf(). Manche (ältere) Compiler haben nämlich Probleme mit dem einlesen per scanf()-Funktionen. |
|
Nach oben |
|
|
GreveN JLI Master
Alter: 38 Anmeldedatum: 08.01.2004 Beiträge: 901 Wohnort: Sachsen - Dresden Medaillen: Keine
|
Verfasst am: 03.05.2006, 17:35 Titel: |
|
|
Darum sollte man auf den alten C-Murks gleich ganz verzichten und die easy-to-use Filestreams der C++-Standardbibliothek verwenden. |
|
Nach oben |
|
|
proggaholic Junior JLI'ler
Alter: 36 Anmeldedatum: 07.05.2005 Beiträge: 85 Wohnort: Heap Medaillen: Keine
|
Verfasst am: 03.05.2006, 18:21 Titel: |
|
|
Sehe ich genauso. Wenn es irgendwie möglich ist (sprich: Wenn Lehrer/Arbeitgeber/System/Projekt kein C verlangt), sollte man die verwenden. So können relativ oft sehr rätzelhafte Probleme umgangen werden. Ansonsten muss man versuchen, aus fgets() und sscanf() das beste herauszuholen. |
|
Nach oben |
|
|
Mat Senior JLI'ler
Alter: 36 Anmeldedatum: 17.09.2005 Beiträge: 205 Wohnort: Koblenz Medaillen: Keine
|
Verfasst am: 04.05.2006, 22:41 Titel: |
|
|
Falls es jemanden Interessiert - benutze ich mitlerweile auch (ausschließlich)
Ein sehr gutes Buch, wo der übergang von C zu C++ aber auch eine SEHR GUTE C++ Referenz gegeben ist lautet:
"Einstieg in C++" Autor Willemer _________________ - - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - - |
|
Nach oben |
|
|
|