Pages: [1]   Go Down
Print
Author Topic: conteggia dimensione  (Read 1249 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
rox
Forumista
***
Offline Offline

Posts: 633


« on: 19-06-2011, 10:31:35 »

salve ragazzi stavo vedendo il codice che è nelle slide del prof. Non ho capito cosa fa con questo frammento di codice .
Code:

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#define bufSize 1024

int main(int argc,char *argv[])
{
int fd,size;
int total=0;
char buffer [bufSize];
if (argc!=2)
{
printf("utilizzo:%s file \n",argv[0]);
exit(1);
}
//apre il file sorgente in sola lettura
fd=open(argv[1],O_RDONLY);
if(fd==-1)
{
perror(argv[1]);
exit(1);
}
//copia tutti i dati in memoria per conteggiare la dimensione
do {
size=read(fd,buffer,bufSize);
if (size==-1)
{
{
perror(argv[1]);
exit(1);
}
total+=size;
printf("debug:ho letto %d byte \n",size);


}
} while (size>0);
printf("la dimensione totale è di %d byte \n",total);
close (fd);
}



In particolare non ho capito :1) cosa c'è all'interno di argc(il numero di file che si utilizzano?)
2)a cosa serve la riga di codice :perror(argv[1]);
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #1 on: 20-06-2011, 11:37:29 »

nomeprogramma.exe Crasher rox

1)
argc contiene il numero di parametri che gli passi (in input) al nomeprogramma e argv contiene i valori dei parametri di input. In Java pure possono essere fatti passare degli argomenti in input: il metodo main infatti è strutturato così: public static void main(String[] args)

2)
- impara a usare la shell: man perror
- trova il modo di far eseguire quella istruzione così capisci cosa fa (o stampa)

Logged

Diventa ciò che sei nato per essere
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #2 on: 21-06-2011, 00:20:29 »

si ma non ho capito praticamente come faccio a passargli dei parametri quando eseguo il codice ... io solitamente per eseguire un programma dopo averlo compilato scrivo :

./nomeEseguibile

e in questo modo eseguo il programma... come faccio a passargli dei parametri aggiuntivi??
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Crasher
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 417



« Reply #3 on: 21-06-2011, 09:25:15 »

l'ho scritto prima!

sulla shell scrivi dopo il nomeEseguibile i parametri che gli passi:
./nomeEseguibile par1 par2 par3 parN
Logged

Diventa ciò che sei nato per essere
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #4 on: 21-06-2011, 13:36:29 »

ah ... Ok! Non avevo capito la prima riga che avevi scritto nel post precedente XD
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
Pages: [1]   Go Up
Print
Jump to: