Funkcja switch. (jak używać switcha)

Funkcja switch. (jak używać switcha)
EX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0
Kopiuj
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 ???

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
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.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
2

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

nalik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1039
0

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

EX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
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)

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
3
Kopiuj
char rodzaj_sygnalu = argv[1][0];
switch(rodzaj_sygnalu)
{
case 'p': foo(); break;
case 'i': bar(); break;
case 'd': baz(); break;
}
EX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

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

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
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.

EX
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 24
0

Dziękuje

nalik
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1039
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 .

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.