Si realizzi un programma strutturato in linguaggio C che permetta di gestire le statistiche di una
partita di calcio. Le informazioni sono contenute in un file il cui nome viene passato da linea di
comando. Tale file contiene, uno per riga e separati da spazi: nome e cognome del giocatore, ruolo, chilometri percorsi, passaggi completati, tiri effettuati, goal fatti, falli fatti e falli subiti.
Il programma può ricevere da linea di comando uno dei seguenti parametri:
1. il flag "-a" e una stringa di caratteri che indica il cognome di un giocatore; in questo caso, il programma deve restituire a video tutte le statistiche
relative al giocatore specificato.
2. il flag “-b” e una stringa di caratteri che indica un ruolo; in questo caso, il programma deve
restituire le statistiche di tutti i calciatori che giocano in quel ruolo.
Ho fatto il programma senza utilizzare la linea di comando e funziona, ma non riesco usando la linea di comando!
Ho messo nello switch case argv[2] ma mi da errore e non riesco a capire cosa ci dovrei mettere per passare una stringa dalla linea di comando!
il mio programma è:
codice:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char*argv[]) { int passaggi,tiri,goal,fal_fat,fal_sub,variabile; float Km; char nome[31],cognome[31],ruolo[15],s[93]; FILE*ff; ff=fopen("calcio.txt","r"); if(ff==NULL){ printf("errore apertura file"); exit(-1); } while(fgets(s,92,ff)!=NULL){ sscanf(s,"%s %s %s %f %d %d %d %d %d",nome,cognome,ruolo,&Km,&passaggi,&tiri,&goal,&fal_fat,&fal_sub); switch(argv[2]){ case '-a': if(strcmp(cognome,argv[3])==0){ printf("%s %s %s %f %d %d %d %d %d\n",nome,cognome,ruolo,Km,passaggi,tiri,goal,fal_fat,fal_sub); } break; case '-b': if(strcmp(argv[3],ruolo)==0){ printf("%s %s %f %d %d %d %d %d\n",nome,cognome,Km,passaggi,tiri,goal,fal_fat,fal_sub); } break; }} return 0; }