Wertuebergabe an MAIN, linux executable

ClausNullAcht15

Grünschnabel
hallo ,

hab ne banale frage deren antwort ich einfach nicht googeln konnte:

will mit g++ ein executable erstellen welches ein beliebiges file ausliest.
in der shell gebe ich dann nur

> lesen sourceFile.txt

ein und er kanns lesen......!? nein...
wie mache ich die uebergabe von der shell zum cpp MAIN ?
main erwartet einen string:

int main( char inputFile[] ) {
FILE *source = fopen (inputfile,"r");

der den filname beinhaltet.
geht das ueberhaupt ?

DANKE fuer eure hilfe
claus
 
Es geht nicht um das lesen der dateien

Das C Programm ist FERTIG !!

aber bis jetzt erhalte ich die dateiNAMEN mit einer SCANF funktion , folglich muss ich sie immer eingeben
und dabei vertippt man sich leicht.

wenn ich aber beim ausfuehren der lesen.exe (also noch in der shell) den dateinamen angeben kann
deswegen

int main ( char sourceFile[] )

dann kann ich den dateinamen mit TAB vervollstaendigen und irrtuemer sind ausgeschlossen.
man sollte also eingeben koennen:

> lesen sourceFile

und sourceFile soll geoeffnet/lesen werden.

sorry wenns nicht gleich ersichtlich war was ich meinte
 
Zuletzt bearbeitet:
Für die Parameterübergabe an ein C/C++ Programm gibt es festgelegte Regeln. Grundsätzlich schaut's so aus:
C++:
int main(int argc, char *argv[])
{
    // ...
    return 0;
}

"argc" ist die Anzahl der übergebenen Parameter, wobei der erste Parameter immer der Programmname selbst ist. Hier kannst du schon mal prüfen, ob dein Programm richtig aufgerufen wird. Der Wert von "argc" müsste dann 2 sein.
"argv[]" schließlich ist dann das Array mit den Parameterstrings. Dein Dateiname wäre in "argv[1]" zu finden.

Gruß
MCoder
 
roger roger....

aber wie sieht dann in der shell die eingabe aus

unser exec heisst zB " programm "

wie uebergebe ich aus der shell die argumente

Danke,
claus
 
Hi.

Deine Frage verwundert mich doch etwas. Wie du die Argumente von der Shell aus übergibst? Na, ganz normal natürlich (bzw. so wie die Shell die du verwendest das vorsieht):
Bash:
./programm arg1 arg2 "argument 3"

In dem Argumentenarray argv sind dann die Werte
C:
{ "./programm", "arg1", "arg2", "argument 3" }
gespeichert. argc ist natürlich dementsprechend 4.

Gruß

/edit: Für den Einstieg ist ja meist ein Buch nicht verkehrt: http://www.galileo-press.de/openbook/c_von_a_bis_z/
 
Zurück