Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Wie trenne ich eine Zeichenkette

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
20.11.2003, 16:46 Uhr
~Frank
Gast


Ich hab da mal ne Frage,bin noch Anfänger und kenne mich noch nicht so gut aus.


Wenn ich über Kommandozeilenparameter die Zeichenkette
17435-20 einlese ist das im main Programm
ja vom Typ char gespeichert.


wie kann ich die Zeichenkette voneinander trennen
das ich unter der 1 Variable 17435 stehen habe und unter
der 2 die 20.

Wäre nett wenn mir da jemand weiter helfen könnte.
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.11.2003, 16:51 Uhr
0xdeadbeef
Gott
(Operator)



C++:
#include <stdio.h>

int main(int argc, char *argv[]) {
  int var1, var2;
  sscanf(argv[1], "%d-%d", &var1, &var2);
  printf("Variable1: %d\nVariable2: %d\n", var1, var2);

  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.11.2003, 18:19 Uhr
Pablo
Supertux
(Operator)


aber das geht, nur wenn du das Format kennst, oder?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.11.2003, 20:45 Uhr
~Frank
Gast


Was ist stido.h?

Und was bedeutet sscanf und print f?
Die letzten 2 Zeilen von deinem Program versteh ich nicht.
Die Begriffe kenne ich nicht.
Geht das vielleicht auch mit einfacheren Befehlen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.11.2003, 21:06 Uhr
Pablo
Supertux
(Operator)


Das sind einfache Befehle.

stdio.h ist eine der wichtigsten Header Datei von C, weil dort nütliche Sachen deklariert werden, wie FILE Pointers, und printf, scnaf, usw.

sscanf tut dasselbe wie die Funktion scanf mit dem Unterschied, dass sscanf nicht von stdin (Tastatur) die Daten einliest, sondern von einer Zeichenkette.

printf ist die C Standardfunktion für die Ausgabe von Zeichenketten, in dem Beispiel wird
Variable1: 17435 Variable2: 20
wenn die Zeichenkette 17435-20 speichert.

Ich habe den Eindruck, du kennst dich gar nicht mit C aus, oder?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.11.2003, 21:10 Uhr
0xdeadbeef
Gott
(Operator)


sscanf und printf sind Funktionen, die in der Header-Datei stdio.h deklariert sind. Zeile für Zeile:

C++:
#include <stdio.h>


bindet den Standard-Header stdio.h ein. Genaugenommen ist es eine Präprozessor-Direktive...der Präprozessor geht über deinen Quellcode, bevor der eigentliche Compiler dran ist. #include <stdio.h> bedeutet soviel wie "such im Include-Path nach einer Datei namens stdio.h und schreib ihren Inhalt hier hin". Header-Dateien enthalten in der Regel Funktions- und in C++ auch Klassendeklarationen, aber nicht den gesamten Quellcode. Der Sinn ist, dem Compiler mitzuteilen, dass die entsprechende Funktion da ist; nicht, was sie macht.

C++:
int main(int argc, char *argv[]) {


deklariert die Funktion "main" mit einem Rückgabewert vom Typ int (Ganzzahl) und zwei Parametern, einem int names argc und einem string-Array namens argv. Per Konvention gibt die Shell main als Parameter die Anzahl der Parameter und die Parameter mit (den Namen der ausführbaren Datei mitgezählt). In deinem Fall ist argc = 2, argv[0] = 'programmname' und argv[1] = "17435-20". Das '{' öffnet einen Block von Anweisungen, in diesem Fall den Funktionskörper von main.

C++:
  int var1, var2;


deklariert zwei Variablen vom Typ int.

C++:
  sscanf(argv[1], "%d-%d", &var1, &var2);


Das ist eine Funktion, die in der stdio.h deklariert wurde. Sie parst einen String und schreibt die geparsten Werte in die Argumente ab dem dritten. Das erste Argument ist der String, der geparst werden soll. Das zweite ist der Format-String, der die Form des Strings, den sscanf erwartet, angibt. %d steht dabei stellvertretend für eine Zahl, die an der Stelle im String steht und in eines der späteren Argumente geschrieben werden soll. &var1 ist die Speicheradresse, an der var1 gespeichert ist, und an die sscanf den geparsten Wert schreiben soll. Das funktioniert natürlich nur, wenn argv[1] die im Format-String angegebene Form hat.

C++:
  printf("Variable1: %d\nVariable2: %d\n", var1, var2);


Schreibt die angegebenen Werte (ab dem zweiten Argument) entsprechend dem Format-String (erstes Argument) auf die Standardausgabe, im Zweifel also die Konsole (Bildschirm). %d steht wieder für ne Zahl, die sich printf aus einem der späteren Argumente greift, \n ist ein Zeilenumbruch.

C++:
  return 0;
}


return 0; bedeutet, dass main 0 zurückgibt. Per Konvention bedeutet das soviel wie "alles ist gut gelaufen". '}' macht den Block, den wir weiter oben geöffnet haben, wieder zu, in diesem Fall ist das das Ende des Programms.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
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: