Funkcja switch. (jak używać switcha)

0
char *rodzaj_sygnalu = argv[1]; // Drugi argument z konsoli

switch ( 0 )
{
case (strcmp(rodzaj_sygnalu, "d")):
printf("d");
break;
case (strcmp(rodzaj_sygnalu, "i")):
printf("i");
break;
case (strcmp(rodzaj_sygnalu, "p")):
printf("p");
break;
}

Kompilator zwraca mi błąd, z czego on wynika ???

2

Nie możesz w ten sposób używać switch-case.
case muszą mieć stałą wartość i muszą być znane w czasie kompilacji - w tym przypadku jest to niemożliwe.

Napisz lepiej co chcesz osiągnąć za pomocą tego kodu.

2

Wyrażenia w switchu muszą być znane w czasie kompilacji. switch to nie funkcja`. Co tutaj właściwie chciałeś osiągnąć?

0

Jeśli chcesz w ten sposób używać switch, to sugeruje inny język programowania niż c ;). W golang da radę.

0

Gdy odpala program z konsoli muszę podać dwa argumenty, jednym z nich jest typu char jest to (d/i/p). I teraz w zależnosci od podanego argumentu, chce wykonać pewną insturukcję(Za pomoca switch, nie ifów)

3
char rodzaj_sygnalu = argv[1][0];
switch(rodzaj_sygnalu)
{
case 'p': foo(); break;
case 'i': bar(); break;
case 'd': baz(); break;
}
0

A gdybym moj argument był typu string, można było by rozwiazać problem w podobny sposób ?

0

Nie w C. W C++ mógłbyś zafejkować trochę z mapą albo metaprogramowaniem, ale to i tak nie byłby switch na stringu.

0

Dziękuje

0
Exceleent napisał(a):

A gdybym moj argument był typu string, można było by rozwiazać problem w podobny sposób ?

W c? Zależy, co rozumiesz przez podobny sposób. Switchem niekoniecznie, chyba, że napiszesz funkcję zamieniająca jednocznacznie łańcuch znakowy na liczbę. Ewentualnie drabinka if - else if .

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