 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 09.12.2009, 14:48 Titel: |
|
|
ja, aber wenn der dateipfad unbekannt ist??? _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
|
Nach oben |
|
 |
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 11.12.2009, 15:26 Titel: |
|
|
aber in argv[] ist immer der name des programms und der name der datei gespeichert. ich will ja nur den namen der datei. _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
Nach oben |
|
 |
Cyianor Super JLI'ler

Anmeldedatum: 23.12.2002 Beiträge: 452
Medaillen: Keine
|
Verfasst am: 11.12.2009, 16:52 Titel: |
|
|
Hey magigman!
Deine Frage klingt so als ob du das Konzept von Arrays noch nicht richtig verstanden hättest.
Code: | int main (int argc, const char* argv[] |
Was du da erhältst ist nicht ein einzelner String, sondern mehr oder weniger eine geordnete Menge von Strings. Auf die einzelnen Strings greifst du mit Hilfe der eckigen Klammern zu. (Achtung: Fängt immer bei 0 an!)
Mit argv[0] greifst du also auf das erste Element des Arrays zu, mit argv[1] auf das zweite und so weiter.
Wie viele Elemente in dieser Menge sind, also wie viele Strings in deinem Array sind sagt dir argc.
Wichtig dabei ist, dass der Programmname immer das erste Element des Arrays ist. Ist argc also 1, so wurden keine Parameter an dein Programm übergeben und argv[0] ist der einzige String in deinem Array und enthält den Programmnamen.
Wurden doch Parameter übergeben ist argc größer als 1 und die Parameter stecken in argv[1], argv[2], argv[3],... je nachdem wie viele eben übergeben wurden.
[EDIT] Jetzt bin ich selbst drauf reingefallen: Während ein Array immer beim Element 0 anfängt, also beispielsweise argv[0], so fängt argc bei 1 an.
Damit du jetzt bloß den von dir gewünschten Parameter erhältst, musst du dir den eben aus dem Array raussuchen. Also angenommen es wird nur ein Parameter übergeben, dann schaut das ganze so aus:
Code: | #include <cstdlib>
#include <cstdio>
#include <cstring>
int main(int argc, const char* argv[])
{
char *para = (char*)malloc(strlen(argv[1]) + 1);
strncpy(para, argv[1], strlen(argv[1]) + 1);
puts(para);
return 0;
} |
Erläuterungen zu den einzelnen Funktionen findest du hier:
strncpy (warum da immer + 1 steht erfährst du hier drin)
strlen
malloc
puts
In einem richtigen Programm müsstest du natürlich auch noch überprüfen ob überhaupt ein Parameter da ist (Stichwort: argc), da dir sonst dein Programm mit einem Speicherfehler abschmiert. [EDIT] Und n schönes Memoryleak hab ich auch noch eingebaut... du musst den durch malloc () reservierten Speicher mit der Methode free () auch wieder freigeben. Nächstes mal gibts nur n Codefragment, da kann man sowas nicht vergessen
Oder du erleichterst dir das Leben und arbeitest mit C++ Strings:
Code: | #include <iostream>
#include <string>
int main (int argc, const char* argv[])
{
std::string para = argv[1];
std::cout << para << '\n';
return 0;
} |
So und jetzt möcht ich dich noch drum bitten dir das ganze erst mal in Ruhe durchzulesen und wenn dus dann noch nicht verstanden hast es nochmal durchzulesen, die Referenzen zu den Funktionen zu verstehen (möglicherweise auch andere Funktionen in der Referenz nachschauen, die Seite ist sehr schön aufgebaut!) und erst dann wieder zu fragen wenns nach ner Stunde selber drüber nachdenken immer noch nicht klappt.
Schönen Gruß,
Vision aka Cyianor |
|
Nach oben |
|
 |
magigman Junior JLI'ler
Anmeldedatum: 25.09.2007 Beiträge: 87
Medaillen: Keine
|
Verfasst am: 12.12.2009, 12:33 Titel: |
|
|
danke!!!
da programmiere ich 2D spiele und hab so was einfaches missverstanden.
es funktioniert jetzt aber alles. hätte ich auch selber drauf kommen können.
danke, danke, danke!!!
Zitat: | Erläuterungen zu den einzelnen Funktionen findest du hier:
strncpy (warum da immer + 1 steht erfährst du hier drin)
strlen
malloc
puts |
kenn ich schon alles.
nochmals danke. (wie konnte ich so was einfaches nicht wissen )
 _________________ Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat. |
|
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
|