Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Groesse von argv[i] oder einem string feststellen ?

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 ] > 2 <
010
22.03.2004, 21:04 Uhr
Pablo
Supertux
(Operator)



Zitat:
~knopper postete
Hallo,

Wie kann ich nun feststellen ob meine argumente vorhanden oder nicht und vielviel ich davon habe ?

z.B

>foo -option argument1 argument2

weil argument 1 und 2 ist nur optional. Aber auch nur maximal 2 Argumente

Wenn vorhanden dann eine oder beine mit einem String zusammenfassen.

Mit if(argv[2]) usw geht irgenwie nicht.

danke im voraus.

gruss

argc ist mindestens 1, da in argv[0] der Aufrufname des Programmes steht.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
011
23.03.2004, 14:19 Uhr
~knopper
Gast


Ich habe so gemacht:



C++:
char *msg,*cmd,send_msg[128];
cmd = "command"
    if(argc>2){
                msg="%s\n";                
                sprintf(send_msg,msg,argv[2]);
                printf("command %d %s \n", strlen(argv[2]),send_msg);
                cmd=strncat(cmd,send_msg,strlen(send_msg));
                printf("cmd %s \n",cmd);
    }



Es soll argument1 ( uns argument2) mit einem best. "cmd" zusammenfügen.
aber es klappt nicht. Was habe denn falsch gemacht ?

gruesse

Dieser Post wurde am 23.03.2004 um 20:39 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
012
23.03.2004, 14:21 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


probier mal

C++:
sprintf(send_msg,"%s%s",argv[1],argv[2]);


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
013
23.03.2004, 14:49 Uhr
~knopper
Gast


aber send_msg sollte ja am ende von cmd hängen.
mit :

cmd=strncat(cmd,send_msg,strlen(send_msg));

geht das nicht.


gruss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
014
23.03.2004, 14:55 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ich steig da gerade gar nicht mehr durch...

schreib mal bitte ein beispiel wie du dein proggie aufrufst und was dann wie in welchem buffer stehen soll....
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
015
23.03.2004, 15:05 Uhr
~knopper
Gast


Aslo:

char *msg,*cmd,send_msg[128];
cmd = "command"


durch:

sprintf(send_msg,"%s\n",argv[2]);

habe ich send_msg. ( konkret "inhalt von send_msg")

Nun möchte ich send_msg am Ende von cmd anhängen.

gruss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
016
23.03.2004, 15:13 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


der erste paramter von sprintf gibt an wo du was hinschreibst...
wenn du alles in cmd ballern willst dann würd ichs so machen


C++:
sprintf(cmd,"%s%s%s",argv[1],argv[2],send_msg );



allerdings sollte du dann für cmd auch speicher reservieren oben in deinem code ist es nur ein pointer und du schreibst da zufällig irgendwo in speicher der dir nicht gehört
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 23.03.2004 um 15:14 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
017
23.03.2004, 15:43 Uhr
~knopper
Gast


Hallo Windalf,

aber so geht doch nicht.
sprintf(cmd,"%s",send_msg);

cmd ist schon initialisiert. und send_msg hat aber eine "feste Groesse".
wenn ich vorher cmd mit char cmd[128] reserviere, kann ich nicht cmd="command" einstzen. Das musst aich aber so machen, weil "command" ist auch nicht jedes mal das gleiche.
Danke für dien Geduld
gruss
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
018
23.03.2004, 16:01 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


also nochmal zu sprintf...

der erste parameter ist der in dem am ende alles drinstehen soll,
dann übergibst du einen formatstring in dem drin steht wie in dem ersten parameter reingeschrieben werden soll...
danach kommt eine paramterliste die anhängig ist wie der formatstring aussieht

ich mach mal ein paar beispiele vielleicht wirds dir ja dann klar


C++:
char buffer[1024];
char tmp[128]="tralala";
sprintf(buffer,"Hallo");   //jetzt steht in buffer Hallo drin
sprintf(buffer,"Hallo %d", 35);   //jetzt steht in buffer Hallo 35 drin
sprintf(buffer,"Hallo %d", 35);   //jetzt steht in buffer Hallo 35 drin
sprintf(buffer,"%s",tmp);         //jetzt steht in buffer tralala
sprintf(buffer,"Hallo%s",tmp);         //jetzt steht in buffer Hallo tralala



du kannst also mehrer strings zusammenschmeissen indem du einfach für jeden string der später in dem komplettstring stehen soll ein %s in den formatstring(das ist der 2.parameter von sprintf) schreibst

angenommen du hast dein programm mit test -asdf -tralala gestartet...

C++:
sprintf(buffer,"%s%s",argv[1],argv[2]); //jetzt steht buffer -asdf-tralala
//wenn du jetzt noch was konstantes vor die parameter schreiben willst kannst du das so machen
sprintf(buffer,"mycommand%s%s",argv[1],argv[2]); //jetzt steht buffer mycommand-asdf-tralala
//du kannst auch noch einen anderen string davorschreiben z.b. so
char cmd[]="mycommand";
sprintf(buffer,"%s%s%s",mycommand,argv[1],argv[2]); //jetzt steht buffer



jetzt klar?
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
019
23.03.2004, 16:51 Uhr
~knopper
Gast


DANKE Windalf !!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] > 2 <     [ 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: