Article View: es.comp.os.linux.programacion
Article #9297Re: argumentos
From: deabru
Date: Mon, 05 Aug 2002 23:08
Date: Mon, 05 Aug 2002 23:08
81 lines
3463 bytes
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-mailReferences:
<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>