/* Implementare un programma in C che riceva da linea di comando una stringa. Il programma dovrà trasformare la stringa in lettere maiuscole e stamparla sullo schermo. L'opzione '-c ' tra il nome del programma e la stringa permette di convertire in maiuscolo e stampare solo i primi caratteri della stringa. */ #include #include #include #include #define LUN 50 int main(int argc, char *argv[]) { int i; char s[LUN+1]; int lunghezza_stringa; /* Un esempio di esecuzione del programma e': nome_prog.exe -c 4 sTriNga le variabili *argv[] e argc conterranno i seguenti valori: argv[0]="nome_prog.exe" argv[1]="-c" argv[2]="4" argv[3]="sTriNga" argc=4 E l'output del programma sara': STRI */ /* Controllo sul numero di argomenti */ if(argc!=2 && argc!=4) { printf("Errore: il programma deve essere eseguito con i seguenti argomenti\n"); printf("%s (-c )? \n", argv[0]); exit(-1) ; /* Come il comando return 1; , ma con exit() il programma viene stoppato anche se exit() viene chiamata all'interno di una funzione */ } if(argc==4) { /* Nel caso in cui l'utente abbia specificato l'opzione -c */ /* Controllo se argv[1] contiene -c */ if(strcmp(argv[1], "-c")!=0){ printf("Errore, l'unica opzione possibile e' -c\n"); exit(-2); } /* Controllo se il secondo argomento e' un numero */ for(i=0; i */ if (lunghezza_stringa > strlen(argv[3])) lunghezza_stringa = strlen(argv[3]); /* Controllo se la stringa contenuta in argv[3] puo' essere salvata in s */ if(strlen(argv[3])>LUN){ printf("Errore: troppo lunga\n") ; exit(-5); } /* La stringa e' stata salvata nel vettore s (una soluzione migliore era l'utilizzo diretto di argv[3]) */ strncpy(s, argv[3], lunghezza_stringa); s[lunghezza_stringa] = '\0'; }else{ /* Nel caso in cui l'unico argomento sia */ /* Controllo se la stringa contenuta in argv[3] puo' essere salvata in s */ if(strlen(argv[1])>LUN){ printf("Error: troppo lunga\n") ; exit(-5) ; } /* Salvataggio della stringa in s */ strcpy(s, argv[1]); lunghezza_stringa = strlen(s); } for(i=0; i