JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=46f487513dfdee82285b6b65e949ab52Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Seltsames Verhalten von fscanf()

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
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

BeitragVerfasst am: 05.02.2006, 21:42    Titel: Seltsames Verhalten von fscanf() Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 06.02.2006, 16:16    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mat
Senior JLI'ler


Alter: 36
Anmeldedatum: 17.09.2005
Beiträge: 205
Wohnort: Koblenz
Medaillen: Keine

BeitragVerfasst am: 06.02.2006, 16:47    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 06.02.2006, 16:53    Titel: Antworten mit Zitat

Wieso speicherst du die Strings, repeat, shuffle und volume überhaupt in der Datei ab wenn du sie sowieso nicht brauchst Wink

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mat
Senior JLI'ler


Alter: 36
Anmeldedatum: 17.09.2005
Beiträge: 205
Wohnort: Koblenz
Medaillen: Keine

BeitragVerfasst am: 06.02.2006, 16:56    Titel: Antworten mit Zitat

Hab's nun hinbekommen Wink

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 06.02.2006, 16:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mat
Senior JLI'ler


Alter: 36
Anmeldedatum: 17.09.2005
Beiträge: 205
Wohnort: Koblenz
Medaillen: Keine

BeitragVerfasst am: 06.02.2006, 17:00    Titel: Antworten mit Zitat

(Gerade deine Post gelesen)

Scrennshots zum verdeutlichen des Problems (also vom Debug-Vorgang) fand ich angemessen - ich meine, warum nicht Embarassed !?

Das mit dem Zwischenspeichern -- hmm fand ich bissher zum weiterhebeln des Positions-Zeigers relativ angenehm Wink

@GetPrivateProfileString
Werde mich mal drüber informieren Wink
_________________
- - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 06.02.2006, 17:36    Titel: Antworten mit Zitat

Mat hat Folgendes geschrieben:
Hab's nun hinbekommen Wink

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
proggaholic
Junior JLI'ler


Alter: 36
Anmeldedatum: 07.05.2005
Beiträge: 85
Wohnort: Heap
Medaillen: Keine

BeitragVerfasst am: 03.05.2006, 17:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden MSN Messenger
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 03.05.2006, 17:35    Titel: Antworten mit Zitat

Darum sollte man auf den alten C-Murks gleich ganz verzichten und die easy-to-use Filestreams der C++-Standardbibliothek verwenden. Razz
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
proggaholic
Junior JLI'ler


Alter: 36
Anmeldedatum: 07.05.2005
Beiträge: 85
Wohnort: Heap
Medaillen: Keine

BeitragVerfasst am: 03.05.2006, 18:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden MSN Messenger
Mat
Senior JLI'ler


Alter: 36
Anmeldedatum: 17.09.2005
Beiträge: 205
Wohnort: Koblenz
Medaillen: Keine

BeitragVerfasst am: 04.05.2006, 22:41    Titel: Antworten mit Zitat

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 Wink
_________________
- - - - - - - - - - - - - - - - - - - -
-> http://www.sea-productions.de
-> http://www.krawall.de
- - - - - - - - - - - - - - - - - - - -
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum