LinuxForum.Fans
Тема

Нужна помощь в Си (Debian 6 (GCC)) учусь!

Автор: webber 4 сообщений 1441 просмотров
#302996

Всем привет!

Изучаю по Си под Linux (Debian 6) GCC v4.4.5-8 x86_64

Возникли вопросы что не так ?

почему не работает switch так как надо?

text
#include <stdio.h>

int main(int a) { switch(a) { case 1: printf("Odin\n"); break;

case 2: printf("Dva\n"); break;

case 3: printf("Tri\n"); break;

} return 0; };

#./a.out 1 Dva

#./a.out 2 Dva

#./a.out 3 Dva

что не так ?

#303039
"webber" написал:
что не так ?

и правда, что не так то? УМВР

"webber" написал:
int main(int a)

единственное что, лучше нормально указывать параметры main()
int main(int argc, char **argv)

#303050

Видимо, у ТС как раз argc и считается - оно всегда двум равно:)

#303062
"-=Serj=-" написал:
Видимо, у ТС как раз argc и считается - оно всегда двум равно:)

а... я рамку до вызовов не прокрутил... тогда случай малость тяжелее...
webber, прочти про параметры main() в своём букваре, что это такое и как оно обрабатывается... это для общего развития...
но на начальном этапе лучше вводи всё просто с клавиатуры вводить через scanf().

Если интересна передача через параметры, то делается оно примерно так:
text

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv) { int a;

if( argc != 2 ) { fprintf(stderr, "Usage: %s number\n", argv[0] ); return EXIT_FAILURE; }

sscanf(argv[1], "%d", &a);

switch(a) { case 1: printf("Odin\n"); break;

case 2: printf("Dva\n"); break;

case 3: printf("Tri\n"); break;

}

return 0; }

[console]alexander@goblin /tmp $ gcc 1.c
alexander@goblin /tmp $ ./a.out 1
Odin
alexander@goblin /tmp $ ./a.out 12
alexander@goblin /tmp $ ./a.out 2
Dva
alexander@goblin /tmp $ ./a.out 3
Tri
[/console]

Войдите или зарегистрируйтесь, чтобы ответить.