Switch (Linguagem C)

5 respostas
C

switch(*argv[1]) { case '+': printf("é +"); break; // aqui funciona case '*': printf("é *"); // aqui não funciona }

alguém sabe a razão?

5 Respostas

ViniGodoy

Aqui funcionou. Tem certeza que passou os parâmetros na linha de comando?

B

Se a Cake estiver usando Linux ou Unix, um “" é interpretado e expandido pelo shell antes de ser passado ao executável. Para ser interpretado corretamente, o "” deve ser antecedido por um “” ou então cercado por aspas simples ou duplas.

C

passei o parâmetros…
o nome do arquivo é teste…

além disso, dá certo fazendo
teste +

uso o windows xp, mas pondo as aspas funcionou…
teste “*”

não entendo hehe

ViniGodoy

Na linha de comando * é um wildcard, que significa “Qualquer coisa”. Você pode usar o comando dir, por exemplo, assim:

Isso lista todos os arquivos com a extensão txt.

Talvez o SO esteja tratando isso para você.

Entre aspas, * significa * mesmo.

B

cake:
passei o parâmetros…
o nome do arquivo é teste…

além disso, dá certo fazendo
teste +

uso o windows xp, mas pondo as aspas funcionou…
teste “*”

não entendo hehe

Se não estiver usando o Microsoft Visual Studio mas sim algum outro compilador (como o do Code::Blocks, que é o gcc ou g++) provavelmente ele simule o comportamento do Unix / Linux para você (no caso do compilador da Microsoft, é possível linkar com o arquivo setargv.obj que simula esse mesmo comportamento) .
E é por isso que quando você pôs o “*” entre aspas funcionou.

Criado 27 de setembro de 2010
Ultima resposta 28 de set. de 2010
Respostas 5
Participantes 3