C/Visual C - Argumentos

 
Vista:

Argumentos

Publicado por Dimus (1 intervención) el 05/08/2002 23:56:30
Hola a todos, tengo un problema con un programa el cual necesita argumentos para usarse. Dicho programa pasa de Euros a Pesetas y vicevesa, pues bien, el programa se ejecuta de la siguiente manera: ./programa -e cantidad (pasa de euros a pesetas) ,/programa -p cantidad (pesetas a euros). Pero tengo un problema a la hora de dar un error si no se introducen correctamente los argumentos, el aviso del error consiste si no se isertan menos de dos argumentos o mas muestre un mensaje de error, pues bien, si ejecuto: ./programa -e -loquesea cantidad , el programa muestra el mensaje de error correctamente, en cambio si inserto: /programa -loquesea , me da una violacion de segmento. ¿alguien sabe porque? Voy a poner el codigo del programa. Un saludo a todos por adelantado.

#include <stdio.h><br>
#include <stdlib.h><br>
<br>
int main(int argc,char *argv[])<br>
{<br>
    int i;<br>
    i=atoi(argv[2]);<br>
        <br>
    if(argc!=2) {<br>
        puts("\nuso: ./programa opcion cantidad");<br>
        puts("opcion: -e   pasa de
euros a pesetas");<br>
        puts("opcion: -p   pasa de
pesetas a euros\n"); <br>
    }<br>
    <br>
    else if(!strcmp(argv[1],"-e")) {<br>
        printf("\n\n%i euros son %i pesetas\n\n",i,i*166); 
 <br>
    }<br>
    <br>
    else if(!strcmp(argv[1],"-p")) {<br>
        printf("\n\n%i pesetas son %i euros\n\n",i,i/166);<br>
    }    <br>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Argumentos

Publicado por Dimus (1 intervención) el 05/08/2002 23:58:04
Ups, he puesto mal el codigo fuente, aqui va el bueno:

int main(int argc,char *argv[])
{
int i;
i=atoi(argv[2]);

if(argc!=2) {
puts("\nuso: ./programa opcion cantidad");
puts("opcion: -e pasa de euros a pesetas");
puts("opcion: -p pasa de pesetas a euros\n");
}

else if(!strcmp(argv[1],"-e")) {
printf("\n\n%i euros son %i pesetas\n\n",i,i*166);
}

else if(!strcmp(argv[1],"-p")) {
printf("\n\n%i pesetas son %i euros\n\n",i,i/166);
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Argumentos

Publicado por chuidiang (677 intervenciones) el 06/08/2002 12:10:39
En las primeras líneas estás utilizando argv[2] para convertirlo a entero. Todavía no has comprobado si hay dos parámetros. El error puede venir ahí.
Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Argumentos

Publicado por Jazmin (49 intervenciones) el 07/08/2002 02:20:06
En esta página en código fuente está el código fuente /*valga la redundancia*/. Fijate alomejor te despeja algunas dudas.

Te mando un beso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Argumentos

Publicado por Daniel (4 intervenciones) el 05/04/2004 03:38:03
prove tu programa y me salto ninguna violacion, lo prove en turbo c++, pero aun asi no funcionaba bien, pero se devia a ke ne la linea
if(argc!=2) {
aki dices ke si introduces un numero diferente de 2 argumentos lance el error,y ke yo recuerde el valor 0 (cero) tambien cuenta, asi ke kambiando a
if(argc!=3) {
me funciona perfectamente tu programa, ya ke al utilizar los argumentos el nombre del programa tambien cuenta, pero ten en kuenta ke yo lo probe en turbo c++, kisiera ke me habisaras si ese era el problema
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar