Autor
		 | 
		
			Tema: Opciones de la línea de comandos--> parámetros de main  (Leído 2,415 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,617
						 | 
						
							 
							
								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,715
						 | 
						
							 
							
								24 Noviembre 2013, 18:26 pm 
								por kikian94
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							[VBS] Utilizar parámetros desde línea de comandos?
							 
							Scripting
						 | 
						
							Hartwell
						 | 
						
							4
						 | 
						
							4,834
						 | 
						
							 
							
								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,942
						 | 
						
							 
							
								 6 Junio 2015, 14:08 pm 
								por ivancea96
							
						 | 
					 
				 
			    |