for(i=0; i<(argc-1); i++)
{
switch(argv[i])
{
case "+":
(...)
case "-":
(...)
case "*":
(...)
case "/":
(...)
}
}
o q tá errado? como corrigir?
for(i=0; i<(argc-1); i++)
{
switch(argv[i])
{
case "+":
(...)
case "-":
(...)
case "*":
(...)
case "/":
(...)
}
}
o q tá errado? como corrigir?
o arqv é um ponteiro duplo pra char, i.e., uam vetor de duas dimensões, então vc tem q passar pro swich o contúto dessa “segunda dimensão”, coloque outro colchetes referenciando a poição zero
troque as aspas duplas por aspas simples, o switch-case compara inteiros ou caracter, as aspas duplas representam uma cadeia de caracteres
flw, t+
Outra coisa - argv[0] não é o primeiro parâmetro e sim o nome do executável.
Dica: em vez de fazer as coisas na mão, use uma biblioteca como o getopt (é claro que se puder fazer isso, já que você parece é estar aprendendo e na escola muitas coisas a gente não pode fazer).
dá pra usar ponteiro como argumento do switch?
Desde quando C tem switch de strings?
n pode, né?
Olha, faz o maior tempo q eu não programo em C. Mas na época q eu programava só podia switch com valores numéricos, chars e enums.
poder pode, mas vc ñ vai ter o resultado que deseja, um ponteiro é algo como uma variável inteira na qual guarda um endereço de memória, sendo assim, quando vc usa o ponteiro vc está usando esse número inteiro, para acessar o conteúdo desse ponteiro vc precisa usar um operador, q pode ser [], * ou ->, cada um com seu intuito
A rigor não.
É que um ponteiro é convertido para um valor numérico totalmente maluco (um endereço de memória), que provavelmente não baterá com nenhuma das opções do switch.
Na prática, você tem de isolar o primeiro caracter da sua opção, algo como:
int i = ....;
if (strlen (argv[i]) > 0) {
switch (argv[i][0]) {
case '-': case '/':
....
break;
....