Article View: es.comp.os.linux.programacion
Article #9298Re: argumentos
From: quantium
Date: Mon, 05 Aug 2002 23:25
Date: Mon, 05 Aug 2002 23:25
80 lines
3634 bytes
3634 bytes
deabru wrote:
> 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);
>> }
>> }
>> }
>
>
Muchisimas gracias amigo, y gracias por la aclaracion de si las
posiciones del vector son 0,1,2, el n�mero de elementos que tengo son 3.
Cuidate
Technical Details
Message-ID:
<3D4F094F.7050201@lycos.es>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!20-madr-x12.libre.retevision.ES!not-for-mailReferences:
<3D4EF39F.2010105@lycos.es> <ain0fb$15njrg$1@ID-111771.news.dfncis.de>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:25:10 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!20-madr-x12.libre.retevision.ES!not-for-mail From: quantium <quantium@lycos.es> Newsgroups: es.comp.os.linux.programacion Subject: Re: argumentos Date: Tue, 06 Aug 2002 01:25:03 +0200 Lines: 81 Message-ID: <3D4F094F.7050201@lycos.es> References: <3D4EF39F.2010105@lycos.es> <ain0fb$15njrg$1@ID-111771.news.dfncis.de> NNTP-Posting-Host: 20-madr-x12.libre.retevision.es (62.83.1.20) Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Trace: fu-berlin.de 1028589908 39058624 62.83.1.20 (16 [129971]) User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0rc3) Gecko/20020523 X-Accept-Language: en-us, en X-Enigmail-Version: 0.62.4.0 X-Enigmail-Supports: pgp-inline, pgp-mime