PDA

Visualizza versione completa : [C/C++] Programma in C che legga variabili tipo -n -s


braian
19-06-2007, 00.21.17
Salve a tutti, devo fare un programma in C per la scuola che mi deve leggere alcuni parametri passsati al momento dell' invocazione del programma cosė:

mioprogramma -n

dove deve essere un numero interoche mi serve come variabile da utilizzare alli'interno del programma.
CHIEDO AIUTO per sapere secondo voi qual'č la via pių semplice per trattare il problema nel senso che forse ci sono funzioni che creano una stringa con i caratteri successivi all '-' (GETOPT non ho capito bene come funzioni) e poi credo che vada convertita a intero (atoi??) ma avrei bisogno di un po' di aiuto su come poter trattare eventuali situazioni di errore come nel caso che trovi una lettera tra i numeri o altro (se poi mi chiarite anche come funziona il trattamento di errore in C ve ne sono garto perchč ERRNO non sobene come funzioni).

Intanto ringrazio fin da ora chi si fa avanti!!

HO MODIFICATO INSERENDO IL TAG DEL C SPERO VADA BENE

Kjow
19-06-2007, 08.56.26
Per favore, modifica il topic del thread in base al regolamento (http://www.wintricks.it/forum/announcement.php?f=21) , altrimenti mi trovo costretto a chiudere il thread.

Ciao e grazie.

erdaniele
19-06-2007, 09.41.58
Salve a tutti, devo fare un programma in C per la scuola che mi deve leggere alcuni parametri passsati al momento dell' invocazione del programma cosė:

mioprogramma -n

dove deve essere un numero interoche mi serve come variabile da utilizzare alli'interno del programma.
CHIEDO AIUTO per sapere secondo voi qual'č la via pių semplice per trattare il problema nel senso che forse ci sono funzioni che creano una stringa con i caratteri successivi all '-' (GETOPT non ho capito bene come funzioni) e poi credo che vada convertita a intero (atoi??) ma avrei bisogno di un po' di aiuto su come poter trattare eventuali situazioni di errore come nel caso che trovi una lettera tra i numeri o altro (se poi mi chiarite anche come funziona il trattamento di errore in C ve ne sono garto perchč ERRNO non sobene come funzioni).

Intanto ringrazio fin da ora chi si fa avanti!!


1° problema: void main(int argc,char **argv);
int Numero degli argomenti della riga di comando, compreso il nome del programma.
argv char ** Indirizzo dell'array di stringhe rappresentanti ciascuna un parametro della riga di comando. La prima stringa č il nome del programma completo di pathname se l'esecuzione avviene in una versione di DOS uguale o successiva alla 3.0, altrimenti contiene la stringa "C". L'ultimo elemento dell'array č un puntatore nullo.

2° problema :
Conversioni da stringhe a numeri - Le funzioni atoi e atof

Per convertire una stringa in un numero, la via pių semplice č usare le funzioni di libreria (del C) atoi e atof :

atoi(argomento), dove argomento č una stringa contenente la rappresentazione decimale di un numero intero, esegue la conversione di argomento e restituisce un valore di tipo int

atof(argomento), dove argomento č una stringa contenente la rappresentazione decimale di un numero floating (in notazione normale o esponenziale), esegue la conversione di argomento e restituisce un valore di tipo double

Entrambe le funzioni vanno utilizzate includendo l'header-file: <stdlib.h>

3° problema: ErrNo.
E una variabile contenente l'errore verificatosi durante l'accesso ad un flusso di dati ( file ) . xEs.
fd = open( "data.txt", O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR );
if( fd == - 1 ) {
printf( "%s\n", strerror( errno ) );
exit( -1 );
la funzione strerror restituisce la descrizione dell' errore.

Spero di esserTi stato utile.

LoryOne
19-06-2007, 11.59.32
Se non sbaglio:
argc č argument count
argv č argument value
atoi ed atof significano ASCII to Integer ed ASCII to Float o Double che dir si volgia.
Ad ogni modo si parla comunque di virgola mobile.

braian
19-06-2007, 12.31.42
Potrei usare la funzione ATOI ma per creare una stringa dai numeri passati per parametro di modo da poter usare l' atoi appunto, devo leggere in sequenza tutto l' array di caratteri (es: -124 leggo -, 1 ,2, 4) controllando ogni volta che siano solo numeri e concatenando (come si fa?) i caratteri ogni volta o esiste qualcosa di pių semplice?

Grazie comunque per le risp

erdaniele
19-06-2007, 12.42.32
Potrei usare la funzione ATOI ma per creare una stringa dai numeri passati per parametro di modo da poter usare l' atoi appunto, devo leggere in sequenza tutto l' array di caratteri (es: -124 leggo -, 1 ,2, 4) controllando ogni volta che siano solo numeri e concatenando (come si fa?) i caratteri ogni volta o esiste qualcosa di pių semplice?

Grazie comunque per le risp

Secondo puoi fare cosi':

int i ;
....
int main ( int argc , char **argv ) ;
...
if ( argc < 2 )
{
printf( "Non sono stati immessi parametri ! \n " );
exit ( 1 ) ;
}
else
{
i = atoi ( *argv [ 2 ] ) ;
printf ("Il primo parametro e' : %i \n" , i ) ;
return i ;
}

LoryOne
19-06-2007, 16.15.31
... devo leggere in sequenza tutto l' array di caratteri (es: -124 leggo -, 1 ,2, 4) controllando ogni volta che siano solo numeri e concatenando (come si fa?) i caratteri ogni volta...


Devi provare per imparare.
atoi ha il suo "contrario" in itoa.
Qualcosa ti dice che "dietro le quinte" si lavora nel modo che hai menzionato.