JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=993568877befd659d1e6377e060bdb95Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Parameter in Feld speichern

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 11.07.2004, 13:00    Titel: Parameter in Feld speichern Antworten mit Zitat

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. Smile
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 11.07.2004, 16:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 11.07.2004, 18:22    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 11.07.2004, 18:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 11.07.2004, 19:07    Titel: Antworten mit Zitat

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. Rolling Eyes Es muss

Code:
strcpy(Parameter[i], argv[i])
heissen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 11.07.2004, 19:37    Titel: Antworten mit Zitat

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)


Sad


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") Smile

[Nachtrag:]
Hast beim Schreiben meines Beitrags ja schon geantwortet. Smile
Danke, funktioniert! Very Happy

_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum