Ein Zeichen als Argument übenhemen!
-
wie kann ich ein zeichen als argument übenehmen?
in argv[2] übergebe ich ein zeichen zb. 'c'
wie kann ich im programm dieses char in eine varibale speichern?bei integer weiss ich es:
int z = argv[1];aber bei char funktionioert es nicht..
-
Hallo,
argv ist ja eine Stringtabelle, d.h. du musst damit rechnen, dass der Inhalt von z.B. argv[1] mehr als ein einzelnes char enthält:
char *str = argv[1]; printf("%s \n", str);
Willst du wirklich nur ein einzelnes Zeichen ablegen, geht's so:
char c = 'a'; printf("%c \n", c);
edit: lies mal ein Tutorial zu dem Thema, z.B. http://www.pronix.de/pronix-4.html
MfG
GPC
-
hinter argv steckt kein ebenes char-Array, sondern ein Array von char-Pointern. Das heißt, um auf ein einzelnes Zeichen zugreifen zu können, benötigst du
char val = argv[2][0];//erstes Zeichen von Argument 2
PS: mag ja sein, daß "int z = argv[2];" durch den Compiler kommt, aber das liefert ziemlich sicher nicht das Ergebnis, was du erwarten würdest.
-
danke für eure hilfe..
in c ist das irgendwie komplizierter als in c++, denn da kann man
eine direkte zuweisung machen, oder?
-
Wenn du in C++ mit char* und char[] hantierst, geht keine direkte Zuweisung (da mußt du dich auch mit der ganzen Speicherverwaltung rumschlagen). ABER: C++ bietet die Klasse std::string, die dir diese Verwaltungsarbeit abnehmen kann.
-
ist das in c++ nicht direkt möglich?
char c = argv[2];
als "ein" zeichen gesehen! also kein string!
-
Nein, auch in C++ ist argv[2] ein char* und kann nicht direkt in einen char umgewandelt werden. (du könntest den Pointer höchstens dereferenzieren, um das erste Zeichen des Arguments zu erhalten - per "c=*argv[2];" oder "c=argv[2][0];" (und DAS funktioniert sogar in C))
-
stimmt. da hast du recht.