Newsgroup: it.comp.lang.c
Titolo: aiuto a scrivere programma

Qualche anima pia mia aiuta??!
Write a C program that accepts an arbitrary number of file
    names as command line parameters, opens the files, counts the number
	of characters in them, and prints the file name and size to stdout.
    The program must handle the errors in opening the files and
    issue proper error messages.
#include <stdio.h>
#include <errno.h>
...
int main(int argc, char *argv[]) {
  ...
}
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 }
Che sforzo... se magari ci dici cosa non ti ? chiaro possiamo darti una
mano.
Luca
-- 
Home: 
http://kronoz.cjb.net
Il tempo speso
a coltivare sogni
non ? sprecato.

 > issue proper error messages.
ok, sono agli inizi e non sto cercando di provare questo esercizio, ma ....
"accepts an arbitrary number of file names as command line parameters"
cosa vuol dire?A parte la traduzione, quello che non mi e' chiaro e' cosa
dovrebbe fare questo programma? Accetta un numero arbitrario di file come
comandi ... cioe?


 
cioe', supponi che il tuo programma si chiami filesize.exe; dovra' 
funzionare cosi', per esempio:
filesize.exe pippo.txt immagine.jpg altro_documento.doc
lo esegui, e l'output potrebbe essere:
file: pippo.txt
size: 1034 bytes
file: immagine.jpg
size: 124123 bytes
file: altro_documento.doc
  - not found -
Ciao,
Zeppe

 comandi ... cioe?
Stai messo maluccio con l'inglese, eh ?
Vuol dire che passi tanti nomi di file sulla riga di comando...
#include <stdio.h>
#include <stdlib.h>
size_t count(const char *filename) {
       FILE *fp;
       size_t ret=0;
       if ((fp=fopen(filename, "rb"))) {
          while (fgetc(fp) != EOF) 
            ++ret;
          fclose(fp);                     
       }
       return ret;
}
void usage(const char *prgname) {
     printf("usage: %s <file> <file> <file> ... <file>\n", prgname);
}
int main(int argc, char *argv[])
{
    if (argc<2)
       usage(argv[0]); 
    else {
      int i;    
      for (i=1; i<argc; i++)
        printf("file: \"%s\"  count: %d\n", argv[i], count(argv[i]));
    } 
    return 0;
}
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 #include <stdlib.h>
alla faccia della didattica... :)
Zeppe

 alla faccia della didattica... :)
il ng non è mica una scuola ;-)


> il ng non è mica una scuola ;-)
per fortuna, perche' dalle lezioni non capisco nulla, ma poi sul ng le cose
diventano pian piano chiare :)))
Ma se volessi anche trattare eventuali errori, non dovrei aggiungere
<errno.h> e poi cosa uso?


 if (argc<2)
immagino che 1 vuol dire il nome del programma stesso, quindi inizia a
contare i file di input da 2 giusto?


 contare i file di input da 2 giusto?
Sì.  Ovviamente argv[] inizia da 0 ed è richiesto che argv[argc] sia NULL,
per avere un controllo ridondante di fine della lista dei parametri.
In realtà non ricordo se lo standard si esprima esplicitamente su cosa
deve contenere argv[0].  Su molte implementazioni c'è il nome
dell'applicazione, completo di path.


 dell'applicazione, completo di path.
[...]
In effetti si esprime su argv[0].
E' garantito che:
Se argc > 0 allora argv[0] rappresenta il "program name".
Questo corrisponde spesso, come hai detto tu, al path
completo dell'applicazione :-)
Comunque è in generale "implementation-defined".
Se l'host non è in grado di fornire stringhe in maiuscolo e
minuscolo allora vengono fornite in minuscolo.
Se l'host non è in grado di fornire tale nome
si ha che argv[0][0] è il carattere nullo.
Inoltre argv[0], come tutti gli altri argv[i] per i = 0,...,argc-1,  è
una stringa  modificabile e mantiene il suo valore durante
l'esecuzione del programma.
--
Giorgio Silvestri
DSP/Embedded/Real Time OS   Software Engineer