JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

eigene dateiendung
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 09.12.2009, 13:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 10.12.2009, 23:10    Titel: Antworten mit Zitat

http://wwwx.cs.unc.edu/~sparkst/howto/cpp_main.php

Du kriegst doch schon ein Array an C-Strings, du musst also eigentlich gar nix mehr teilen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 11.12.2009, 14:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Cyianor
Super JLI'ler



Anmeldedatum: 23.12.2002
Beiträge: 452

Medaillen: Keine

BeitragVerfasst am: 11.12.2009, 15:52    Titel: Antworten mit Zitat

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 Wink

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
Benutzer-Profile anzeigen Private Nachricht senden
magigman
Junior JLI'ler



Anmeldedatum: 25.09.2007
Beiträge: 87

Medaillen: Keine

BeitragVerfasst am: 12.12.2009, 11:33    Titel: Antworten mit Zitat

danke!!!
da programmiere ich 2D spiele und hab so was einfaches missverstanden. Embarassed
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. Laughing
nochmals danke. (wie konnte ich so was einfaches nicht wissen Rolling Eyes )
Don't
_________________
Wer einen Rechtschreibefehler findet, darf ihn behalten, in ein Regal stellen und jedem der vobei geht sagen, dass ER ihn gefunden hat.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Fragen, Antworten und Kritik Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
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