PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C & überladen von main()



f0rtex
05-11-2002, 21:27
Hallo Leute

Wenn ich die main-Funktion in C wie folgt überlade (sagt man dem in C so???)


int main(int argc, char *argv[])
{
if(argc < 2){
fprintf(stderr,"Syntax: uebung2 string\n");
return EXIT_FAILURE;
}
...
return EXIT_SUCCESS;


wieso kann ich dann nicht folgendes aus der shell machen:


$ echo "ein string" | ./uegung2
Syntax: uebung2 string


Anderst ausgedrückt: Wieso funktioniert das pipe-ing nicht?

Danke
f0rtex

anda_skoa
05-11-2002, 21:56
Original geschrieben von f0rtex
Hallo Leute

Wenn ich die main-Funktion in C wie folgt überlade (sagt man dem in C so???)


Überladen ist was anderes :)



wieso kann ich dann nicht folgendes aus der shell machen:


$ echo "ein string" | ./uegung2
Syntax: uebung2 string


Anderst ausgedrückt: Wieso funktioniert das pipe-ing nicht?


die argv Elemente der main Funktion sind die Parameter, die das Programm beim Aufruf bekommt.
Der Input durch eine Shellpipe kommt von stdin, dort wo normalerwesie interaktive Benutzereinaben kommen.

Du kannst zB mit fgets, scanf, etc. von dort lesen.

Ciao,
_

f0rtex
05-11-2002, 22:05
Also müsste ich im Prinzip abfragen, ob argc >= 2 ist, wenn dies nicht der Fall ist, müsste ich den String zusätzlich einlesen?



if(argc < 2)
Einlesefunktion();
else
normaler prg. ablauf


Verstehe ich das richtig?
Damit sollte dann, sowohl das pipe-ing als auch das Einlesen via Kommandzeile, funktionieren.

anda_skoa
05-11-2002, 23:17
Ja, könnte man so machen.

Es gibt auch Programme, die nur von stdin lesen und die Kommandozeilenparameter nur benutzen, um bestimmtes Verhalten zu aktivieren.

Aber für den Anfang ist deine Lösung ausreichend.

Ciao,
_