|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 11.07.2004, 13:00 Titel: Parameter in Feld speichern |
|
|
Ich bin nach laaaanger Zeit aufgrund von schwerwiegender Krankheit mal wieder ans Programmieren ran.
Jetzt habe ich ein Konsolenprogramm entwickelt und will noch was mit Parametern einbauen.
Mein Problem ist, die Parameter in char-Variablen abzuspeichern.
Ich habe das Feld Parameter[16][64] initialisiert, d.h. da würden 16 Parameter mit max. 64 Zeichen pro einzelnem reinpassen.
Ich habe jetzt eine for-Schleife, die mit der Anzahl von argc durchlaufen wird.
Was ich leider nicht hinbekommen habe, dass alle Parameter in dem Feld gespeichert werden können.
Parameter[x] = argv[x]
usw...
Komischerweise gings nach vielem Rumprobieren dann irgendwann mal so, dass er immer nur den Anfangsbuchstaben jedes Parameters speicherte.
Und jetzt habe ich mir fast alle Haare ausgerissen und bitte euch um Hilfe.
Es müssen die Parameter unbedingt in diesem Feld gespeichert werden, da ich den Rest meines Programm für dieses geschrieben habe.
Ich hoffe ihr könnt und möchtet helfen. _________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.07.2004, 16:56 Titel: |
|
|
Möglich wäre es so:
Code: | typedef char MyChar[64];
MyChar parameter[16]; |
oder so:
Code: | char *Parameter[16];
//beim belegen des parameter
//Speicher reservieren für parameter[index] |
_________________ "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 |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 11.07.2004, 18:22 Titel: |
|
|
Das Problem ist, dass du Strings nicht direkt zuweisen kannst. Wenn du die Parameter, die in argv[] gespeichert sind kopieren willst, muss das per strcpy() machen, also
Code: |
char Parameter[16][64];
for(int i=0;i<argc-1;i++)
{
strcpy(Parameter, argv[i]); // bessern noch strncpy(Parameter,argv[i],63); und dann Parameter[63] = 0;
}
|
Ich hoffe es geht dir gut.
Christian |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 11.07.2004, 18:45 Titel: |
|
|
Christian Rousselle hat Folgendes geschrieben: | Das Problem ist, dass du Strings nicht direkt zuweisen kannst. Wenn du die Parameter, die in argv[] gespeichert sind kopieren willst, muss das per strcpy() machen, also
Code: |
char Parameter[16][64];
for(int i=0;i<argc-1;i++)
{
strcpy(Parameter, argv[i]); // bessern noch strncpy(Parameter,argv[i],63); und dann Parameter[63] = 0;
}
|
Ich hoffe es geht dir gut.
Christian |
Was bringt dir das wenn du das immer auf die Anfangsadresse von Parameter kopierst ? Ich glaub du hast vergessen die Arraybounds anzugeben oder ? _________________ "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 |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 11.07.2004, 19:07 Titel: |
|
|
FallenAngel84 hat Folgendes geschrieben: |
Was bringt dir das wenn du das immer auf die Anfangsadresse von Parameter kopierst ? Ich glaub du hast vergessen die Arraybounds anzugeben oder ? |
Ja, klar. Es muss
Code: | strcpy(Parameter[i], argv[i]) | heissen. |
|
Nach oben |
|
|
magynhard Super JLI'ler
Anmeldedatum: 26.04.2003 Beiträge: 461 Wohnort: Wild durch die Welt ;-) Medaillen: Keine
|
Verfasst am: 11.07.2004, 19:37 Titel: |
|
|
Christian Rousselle hat Folgendes geschrieben: | Das Problem ist, dass du Strings nicht direkt zuweisen kannst. Wenn du die Parameter, die in argv[] gespeichert sind kopieren willst, muss das per strcpy() machen, also
Code: |
char Parameter[16][64];
for(int i=0;i<argc-1;i++)
{
strcpy(Parameter, argv[i]); // bessern noch strncpy(Parameter,argv[i],63); und dann Parameter[63] = 0;
}
|
Ich hoffe es geht dir gut.
Christian |
Danke für die Hilfe, nur leider funktioniert es (bei mir) nicht.
Ich erhalte folgende Fehlermeldung:
Code: |
error C2664: 'strcpy' : cannot convert parameter 1 from 'char [16][64]' to 'char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.
programm.exe - 1 error(s), 0 warning(s)
|
Der Kopf der main-Funktion sieht wie folgt aus:
Code: |
int main(int argc, char *argv[])
{
...
}
|
Danke für deine Hoffnungen, ich bin zurzeit auf dem Weg der Besserung, auch wenn noch schwankend. (Unter anderem Dank dem Meiden von schulmed. "Ärzten")
[Nachtrag:]
Hast beim Schreiben meines Beitrags ja schon geantwortet.
Danke, funktioniert!
_________________ Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
|
|
Nach oben |
|
|
|
|
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
|