Noob braucht Hilfe bei String-Übergabe in main
-
Hallo,
leider habe ich nicht viel, besser keine, Ahnung von c++. Ich muss nun aber ein c++ Programm etwas abändern.
Es ist ein reines Konsolen Projekt und ich muss es so umbauen das ich beim Start Parameter (einen String (Pfad)) übergeben kann. Dieser soll dann in einer anderen Funktion verwendet werden. Leider komme da nur komische Zeichen an und ich weiss nicht wieso. Ich kann leider nicht den original Code angeben aber ich Stelle das Problem einmal nach:#include <conio.h> #include <stdio.h> #include <stdlib.h> unsigned char Test_EFS(char Test2[]); int main(char Test[]) { Test_EFS(Test); } unsigned char Test_EFS(char Test2[]) { printf("\n %s\n", Test2); }
Wenn ich nun in den Projekteinstellungen als Programmargument "Hallo" (ohne Anführungszeichen) angebe bekomme ich nur komische Zeichen angezeigt.
Was mache ich falsch?Vielen Dank für eure Hilfe
twickl
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Morgen!
Die möglichen Signaturen von main() sind:
int main( ); // und int main( int argc, char *argv[ ] );
argc und argv sind übrigens historisch bedingte Namen.
Also deine
twickl schrieb:
int main( char Test[ ] )
ist nicht dabei
So würd' das funktionieren:
#include <conio.h> #include <stdio.h> #include <stdlib.h> unsigned char Test_EFS( char Test2[ ] ); // argc enthält die Anzahl der Argumente in argv[ ] // argv ist ein Zeiger auf Arrays von char und // enthält die durch auf der Kommandozeile // durch Leerzeichen getrennten Argumente // argv[ 0 ] enthält immer den namen des // Programmes selbst. int main( int argc, char *argv[ ] ) { if( argc != 2 ) { printf( "Falsche Argumente!\n" ) return 0; } Test_EFS( argv[ 1 ] ); } unsigned char Test_EFS( char Test2[ ] ) { printf( "\n %s\n", Test2 ); }
Greetz, Swordfish
-
Super!
Hab nicht gewusst das ich keine eigenen Parameter in Main "hinzudichten" darf. Aber jetzt geht es.
Vielen Dank
twickl
P.S.: Gibt es eine Möglichkeit den kompetten inhalt der Konsole in einer Datei zu schreiben bevor diese geschlossen wird?
-
Naja, du könntest jede deiner Ausgaben direkt mitloggen á la
#include <stdio.h> #include <string.h> FILE *logfile; int my_puts( char *str ); int main( ) { logfile = fopen( "C:\\logfile.log", w ); puts( "Hello, logfile!" ); fclose( logfile ); } int my_puts( char *str ) { fwrite( str, strlen( str ), 1, logfile ); return puts( str ); }
Greetz, Swordfish