| 
	
		|  Autor | Tema: Opciones de la línea de comandos--> parámetros de main  (Leído 2,414 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,616 |  20 Noviembre 2010, 21:33 pm por Garfield07
 |  
						|   |   | Parámetros en main y función Sleep() Programación C/C++
 | Saberuneko | 5 | 5,289 |  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 | 6,705 |  24 Noviembre 2013, 18:26 pm por kikian94
 |  
						|   |   | [VBS] Utilizar parámetros desde línea de comandos? Scripting
 | Hartwell | 4 | 4,825 |  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,933 |  6 Junio 2015, 14:08 pm por ivancea96
 |    |