Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Char * zerlegen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.03.2005, 08:46 Uhr
~iBOT
Gast


Hi, einfache frage!
Wie kann ich ein char * in dem 300x500 oder 1024x378 etc. steht so zerlegen das ich zwei ints mit bekomme, also 300 und 500 usw. . Geht das nur in ner schleife oder gibs da wieder ne function die ich net kenne?
Vielen Dank
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.03.2005, 08:57 Uhr
0xdeadbeef
Gott
(Operator)



C++:
char res[] = "1024x768";
int width, height;

sscanf(res, "%dx%d", &width, &height);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 03.03.2005 um 08:57 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.03.2005, 09:10 Uhr
~iBOT
Gast


Super!Vielen dank, ich wußte da gibt es was, was mir nicht einfällt!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.03.2005, 10:48 Uhr
~iBOT
Gast


Doch net so super. Der erste Wert ist immer richtig aber den zweiten Wert liest er nicht aus!? woran kann das liegen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.03.2005, 11:14 Uhr
Th



Überprüf mal den Rückgabewert von sscanf, dieser liefert die Anzahl der geparsten Argumente, in deinem Fall also müßte es 2 sein.
Ich habe es gerade mit dem MSVC ausprobiert und bei mir liefert es die richtigen Werte zurück, welchen Compiler benutzt du denn?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.03.2005, 11:16 Uhr
typecast
aka loddab
(Operator)


Also bei mir funktioniert das einwandfrei.

Kann es sein, dass dein String nicht die Form: "ZahlxZahl" hat?
Ein String wie "1024 x 768" funktioniert z.B. damit nicht.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.03.2005, 11:35 Uhr
~iBOT
Gast


Also wenn ich das char so definiere wie von dir oben beschrieben dann geht es auch. Aber dies tu ich nicht da der wert 1200x800 beim aufruf über komandozeile übergeben wird! Macht das ne unterschied? das result dann ist übrigens 1!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
03.03.2005, 12:54 Uhr
typecast
aka loddab
(Operator)


Lass dir doch einfach mal das Kommandozeilenargument anzeigen.

Wenn es nicht die Form ZahlxZahl hat, dann wird das nicht funktionieren. Es wird insbesondere nicht funktionieren, wenn Leerzeichen in dem String sind, da die Argumente durch Leerzeichen getrennt sind.

Wenn du den Aufruf


Code:
./meinProgramm 1200 x 800



hast, dann sehen die Argumente so aus:

argv[0] == ./meinProgramm
argv[1] == 1200
argv[2] == x
argv[3] == 800
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: