Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [C] riga comando

  1. #1

    [C] riga comando

    ciao,
    ho main( int argc, char *argv[] )


    dovrei prendere al max 3 comandi del tipo:

    nomeprogramma.exe 5 4 +

    e fare la somma tra 5 e 4...

    il problema che argv è di tipo char... come faccio a capire che valori gli vengono passati ?
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  2. #2
    usa la funzione atoi() che converte una stringa numerica nel corrispondente valore.
    In caso di errore ritorna zero, ma ritorna zero anche se legge il valore zero ovviamente, quindi dovresti fare un piccolo controllo per stabilire se lo zero deriva da un errore oppure è più semplicemente il valore covertito.



  3. #3
    Utente di HTML.it L'avatar di Ed_Bunker
    Registrato dal
    Jul 2003
    Messaggi
    1,119
    Ci sarebbe anche questa:

    STRTOL(3) Linux Programmer's Manual STRTOL(3)

    NAME
    strtol - convert a string to a long integer.

    SYNOPSIS
    #include <stdlib.h>

    long int strtol(const char *nptr, char **endptr, int base);

    DESCRIPTION
    The strtol() function converts the string in nptr to a
    long integer value according to the given base, which must
    be between 2 and 36 inclusive, or be the special value 0.

    The string must begin with an arbitrary amount of white
    space (as determined by isspace(3)) followed by a single
    optional `+' or `-' sign. If base is zero or 16, the
    string may then include a `0x' prefix, and the number will
    be read in base 16; otherwise, a zero base is taken as 10
    (decimal) unless the next character is `0', in which case
    it is taken as 8 (octal).

    The remainder of the string is converted to a long int
    value in the obvious manner, stopping at the first charac-
    ter which is not a valid digit in the given base. (In
    bases above 10, the letter `A' in either upper or lower
    case represents 10, `B' represents 11, and so forth, with
    `Z' representing 35.)

    If endptr is not NULL, strtol() stores the address of the
    first invalid character in *endptr. If there were no dig-
    its at all, strtol() stores the original value of nptr in
    *endptr. (Thus, if *nptr is not `\0' but **endptr is `\0'
    on return, the entire string is valid.)

    RETURN VALUE
    The strtol() function returns the result of the conver-
    sion, unless the value would underflow or overflow. If an
    underflow occurs, strtol() returns LONG_MIN. If an over-
    flow occurs, strtol() returns LONG_MAX. In both cases,
    errno is set to ERANGE.

    ERRORS
    ERANGE The given string was out of range; the value con-
    verted has been clamped.

    CONFORMING TO
    SVID 3, BSD 4.3, ISO 9899

    SEE ALSO
    atof(3), atoi(3), atol(3), strtod(3), strtoul(3)

  4. #4
    per quanto ne so dovrebbe essere una cosa semplice...


    non è che c'è un metodo più semplice ?
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  5. #5
    non riesco a fare lo switch bene per prendere il simbolo + o -,
    cioè con atoi riesco a prendere dalla riga di comando gli interi inseriti... ma non riesco a fare uno switch in modo tale che quando ci sia il + esegua la funzione somma e quando c sia il meno la sottrazione...

    con atoi ottengo come risultato un intero...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  6. #6
    ok lasciate stare... ho risolto da solo grazie lo stesso
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.