[ ansi c ] parametry

0

taki prosty program chcial zrobic, tj tak gdy np. opdale: ./a.out -1 , to pokaze mi sie jakis tam napis , i zrobilem cos takiego:
[code]
#include
#include

main(int argc, char *argv[])
{
int options;

while((options = getopt(argc, argv, "1:0")) !=EOF)
{
    switch(options)
	{
	    case '1' : printf("dn");  break;
	    case '0' : printf("cn");  break;
	    default : printf("nicn"); break;
	}
}

}
[/code]

co tutaj jest zle? gdy program opadalam z paramterm 1 czy 0 to nic sie nie dzieje, dlaczego ? i moglby ktos sklepac taki przykladowy program ktory z np. parameterem a , pokaze jakis napis :)
dzieki

0

po pierwsze po co ten minus przed 1 ??
jak masz coś takiego :
./a.out blabla
to "blabla" jest argv[1] , to ten tekst jest 1 argumentem
a po drugie , nie lepiej zrobić tak :

[code]#include

main(int argc, char *argv[])
{
char option;

if(argc>1)
switch(argv[1][0])
{
case '1' : printf("dn"); break;
case '0' : printf("cn"); break;
default : printf("nicn"); break;
}
else
printf("nicn");
}[/code]

0

w sumie, chodzi mi o to zeby program odpalac, z jakis parametrami, np.
./a.out -n 10 -h cos_tam itd, :) wiec moglbys jakis przyklad mi tutaj zarzucic :)

0

wiesz.. robisz blad.. dwa bledy
po1:

nie pisz getopt(...) != EOF...

man getopt

popwarnie to
while ( ( options = getopt( argc, argv, "10" ) ) != -1 )
{
...
}

funckja zwraca -1 w przypadku koncu.. a nie EOF czyli 0

po2:

w getopt opcje podajesz nomrlanie np abcde, dwukropek oznacza ze dana opcja
chce parametre, parametr bedzie w zmiennej optarg

np.:

while ( ( options = getopt( argc, argv, "f:h" ) ) != -1 )
{
swtich ( options )
{
case 'f':
printf("Opcja %s\n", optarg );
break;
case 'h':
printf("usagae: %s -f <file>\n",argv[0] );
break;
}
}

;]]]]

0

nie pisz getopt(...) != EOF...

man getopt

popwarnie to
while ( ( options = getopt( argc, argv, "10" ) ) != -1 )
{
...
}

funckja zwraca -1 w przypadku koncu.. a nie EOF czyli 0

LOL
A kto ci powiedział , że EOF == 0 ????
Nie wiem jak u innych ale u mnie w dwóch różnych kompilatorach stała ( #defineowa ) EOF jest równa -1 .
[browar]

0

niom -1, sorry, sugerowalem sie fgetsem ktory w razie EOF'a zwraca NULL ;p

1 użytkowników online, w tym zalogowanych: 0, gości: 1