Autor
|
Tema: Opciones de la línea de comandos--> parámetros de main (Leído 2,108 veces)
|
++c
Desconectado
Mensajes: 29
|
Hola amigos tengo una duda creando una calculadora a través de la línea de comandos. El problema es que nunca se me cumple el parámetro argc[] como número entero indicando el valor del total de argumentos que he introducido por teclado. Por consola introduzco por ejemplo: .\main 4+2
Pienso introduzco 4 parámetros:
- argv[0] --> main - argv[1] --> 4 - argv[2] --> + - argv[3] --> 2
#include <stdio.h> #include <stdlib.h> #include <string.h> int main (int argc, char *argv[]) { int a,b,c; printf("\nargc vale %d",argc ); if(argc==4){ switch(b){ case '+': printf("La suma de %d+%d = %d\n",a ,c ,a +c ); break; case '-': printf("La resta de %d-%d = %d\n",a ,c ,a -c ); break; case '/': printf("La division de %d/%d = %d",a ,c ,a /c ); break; case '*': printf("La multiplicacion de %d*%d = %d",a ,c ,a *c ); break; default: printf("Introduzca una opcion valida\n"); } } else printf("No hay suficientes datos\n"); return 0; }
Gracias!!
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
El error en el programa se debe a que tratas de leer el operador como si fuera un entero:
No es necesario, en su lugar puedes utilizar directamente el primer carácter de ese argumento para controlar el bucle, de esta forma: switch(argv[2][0]){ case '+': printf("La suma de %d+%d = %d\n",a ,c ,a +c ); break; case '-': printf("La resta de %d-%d = %d\n",a ,c ,a -c ); break; case '/': printf("La division de %d/%d = %d",a ,c ,a /c ); break; case '*': printf("La multiplicacion de %d*%d = %d",a ,c ,a *c ); break; default: printf("Introduzca una opcion valida\n"); }
Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
++c
Desconectado
Mensajes: 29
|
+10 rir3760 Grande !! Me ha encantado la forma de leer esos caracteres como me has indicado, tomo nota Recoloco el código completo de como quedaría : #include <stdio.h> #include <stdlib.h> #include <string.h> int main (int argc, char *argv[]) { int a,c; if(argc==4){ switch(argv[2][0]){ case '+': printf("\nLa suma de %d+%d = %d\n",a ,c ,a +c ); break; case '-': printf("\nLa resta de %d-%d = %d\n",a ,c ,a -c ); break; case '/': printf("\nLa division de %d/%d = %d",a ,c ,a /c ); break; case '*': printf("\nLa multiplicacion de %d*%d = %d",a ,c ,a *c ); break; default: printf("\nIntroduzca una opcion valida\n"); } } else printf("No hay suficientes datos\n"); return 0; }
Por cierto también desconocía que el operador * estaba reservado en bash, he tenido que engañarle de esta manera: Gracias de nuevo!!
|
|
« Última modificación: 3 Octubre 2014, 21:29 pm por ++c »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
!!! Help Linea de comandos diferentes opciones !!!
Programación C/C++
|
Garfield07
|
9
|
3,256
|
20 Noviembre 2010, 21:33 pm
por Garfield07
|
|
|
Parámetros en main y función Sleep()
Programación C/C++
|
Saberuneko
|
5
|
4,948
|
14 Junio 2012, 16:07 pm
por 0xDani
|
|
|
paso de parametros a la funcion main y archvos pbm
« 1 2 »
Programación C/C++
|
kikian94
|
10
|
5,815
|
24 Noviembre 2013, 18:26 pm
por kikian94
|
|
|
[VBS] Utilizar parámetros desde línea de comandos?
Scripting
|
Hartwell
|
4
|
4,267
|
16 Agosto 2014, 23:21 pm
por Hartwell
|
|
|
Problema con parámetros que recibe main(int argc, char *argv[])
Programación C/C++
|
antkk
|
1
|
2,440
|
6 Junio 2015, 14:08 pm
por ivancea96
|
|