Quesiti linguaggio C

Pubblicità

exitrg

Utente Attivo
Messaggi
12
Reazioni
0
Punteggio
25
Salve a tutti, sto imparando a programmare in C e qualcosa ho già capito ma ho due quesiti per voi:
1)il primo riguarda l'intestazione, io ho sempre scritto programmi usando questa sintassi iniziale: int main (argc, const char * argv[]) { etc.... ma ho visto programmi che omettono il contenuto tra le parentesi tonde quindi qualcuno mi potrebbe spiegare bene cosa vogliono dire argc, const char etc....
2)è un esercizio trovato in internet che volevo risolvere.
in un file .txt sono contenute delle date nel formato (es.) 25 gennaio 2010 (una data per riga) il programma deve dire anzitutto quante sono le date presenti, poi trovare la data più recente e la più vecchia, ed infine fare la media di tutti gli anni presenti e di tutti i giorni presenti. Io pensavo di fare 3 vettori colonna (nel primo mettere il giorno, nel secondo il mese e nel terzo l'anno, così leggendo i vettori riga per riga mi trovo esattamente ciò che c'è nel file) ma non so proprio come fargli leggere i vari dati e memorizzarli. Spero qualcuno mi possa aiutare, ovviamente non voglio il programma completo, mi bastano degli input! grazie a tutti in anticipo!
 
il main è a tutti gli effetti una funzione e può ricevere anche lui dei parametri...
nel caso di int main (int argc, char*argv[]), argc contiene il numero di parametri che vengono passati da riga di comandi, mentre argv contiene gli stessi, intesi come caratteri/strighe..
ad esempio, se chiami un programma con:
prova.exe 5 file1.txt
l'argc ti restituirà il valore 3, mentre argv[0] sarà il nome del programma, argv[1] l'intero 5, e argv[2] la stringa "file1.txt"
Ricorda che l'argv[0] sarà sempre il nome del programma.
Se non utilizzi il passaggio di parametri attraverso la riga di comando, puoi benissimo iniziare il programma con int main()

per quanto riguarda l'esercizio, prima di tutto non so se sai che per lavorare su un file devi creare un puntatore ad esso (es. FILE *fp) e devi aprirlo, attraverso la fopen, associandolo a quel puntatore...

per leggere su file, i comandi più comuni sono la fscanf e la fgets.
Per utilizzare la prima devi conoscere il formato dei dati di input, mentre la seconda legge l'intera riga memorizzandola in una stringa (solitamente chiamata buffer) e restituisce NULL quando è arrivata al fine del file...

le sintassi sono:
- fscanf("puntatore al file", "formati del file", argomenti)
es. fscanf(fp,"%f%f", &float1,&float2);
-fgets("stringa di appoggio", "dimensione della stringa","puntatore al file")
es. fgets(buffer, MAX, fp); avendo definito MAX come 150 (#define MAX 150) e buffer come char buffer[MAX]

spero che come "input" per completare l'esercizio ti bastino, ma se hai bisogno di qualche altro chiarimento chiedi pure... :)

P.s. se ho detto qualche cavolata correggetemi pure, alla fine è solo un anno che programmo in c all'università :lol:
 
il C e' stato creato per scrivere il sistema operativo unix e poi linux,
quidi i programmi compilati sono previsti per l'utilizzo da linea di comando.
esempio : copy a b
dove copy e' il programma e "a" "b" sono i paramteri argv e argc
se si utilizza per i normali programmi, argv e argv si possono omettere senza problema..

Inoltre consiglio di utilizzare subito il C++ (Dev-C) dove si utilizza Cout<<"aaa"
e Cin>>var al posto di printf e scanf. che invece hanno bisogno dei formattatori...
 
Pubblicità
Pubblicità
Indietro
Top