🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #9297

Re: argumentos

#9297
From: deabru
Date: Mon, 05 Aug 2002 23:08
81 lines
3463 bytes
On Mon, 05 Aug 2002 23:52:31 +0200, quantium wrote:

Hola, esta es una manera:

#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[])
{
	float i;
		
	if(argc!=3) 
	{
		puts("\nuso: ./programa opcion cantidad");
		puts("opcion: -e   pasa de euros a pesetas");
		puts("opcion: -p   pasa de pesetas a euros\n");
	}
	else
	{
	    i=atoi(argv[2]);
	    if(!strcmp(argv[1],"-e")) 
	    {
		printf("\n\n%f euros son %f pesetas\n\n",i,i*166);
	    }
	    else if(!strcmp(argv[1],"-p")) 
	    {
		printf("\n\n%f pesetas son %f euros\n\n",i,i/166);
	    }
	}
}

el problema era el i=atoi(argv[2]); que no pasaba la comprobaci�n de
argumentos (aunque hubiesen 0 argumentos el intentaba buscar el argumento
numero 2) (tb he puesto las variables en fload y recordarte que si las
posiciones del vector son 0,1,2, el n�mero de elementos que tiene son 3,
y ese es el numero que tienes que controlar en if(argc!=3)

> 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>
> #include <stdlib.h>
> 
> 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);
>      }	
>      }	
>      }	

-- 
deabru... bai deabrunaiz
deabru,  el loco del papansil

" mugaren, altzoan, zugana, noa " EH sukarra, Sua Urtzean
" lo que sea menos telef�nica - terra "

by deabru
Technical Details
Message-ID: <ain0fb$15njrg$1@ID-111771.news.dfncis.de>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fu-berlin.de!uni-berlin.de!213-97-80-55.uc.nombres.ttd.ES!not-for-mail
References: <3D4EF39F.2010105@lycos.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,3131bf42e3f12e82
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2002-08-05 16:07:25 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!fu-berlin.de!uni-berlin.de!213-97-80-55.uc.nombres.ttd.ES!not-for-mail
From: deabru <deabru@ono.com>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: argumentos
Date: Tue, 06 Aug 2002 01:08:35 +0200
Organization: Ura Sutan
Lines: 81
Message-ID: <ain0fb$15njrg$1@ID-111771.news.dfncis.de>
References: <3D4EF39F.2010105@lycos.es>
NNTP-Posting-Host: 213-97-80-55.uc.nombres.ttd.es (213.97.80.55)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Trace: fu-berlin.de 1028588844 39571312 213.97.80.55 (16 [111771])
X-Orig-Path: not-for-mail
User-Agent: Pan/0.11.3 (Unix)
X-Comment-To: "quantium" <quantium@lycos.es>