PDA

View Full Version : Un piccolo aiuto su programmazione in C (UNIX)


Fire Fox II
18-04-2004, 17:13
Salve raga :)

innanzitutto mi scuso x la banalità della domanda :D ma essendomi perso alcune lezioni all'uni, non capisco il significato di una funzione... (la struct)

X esempio, in questo prog


#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <dirent.h>

int main()
{
char c, cwd[100];
int fd;
struct stat buf;
struct dirent *drn;
DIR *dp;

getcwd(cwd,sizeof(cwd));
if((dp=opendir(cwd))==NULL)
printf("opendir error\n");
while((drn=readdir(dp))!=NULL)
{
printf("Il nome del file e' %s\n",drn->d_name);
if(lstat(drn->d_name,&buf) <0)
printf("Errore lstat su %s\n",drn->d_name);
if(S_ISLNK(buf.st_mode))
{
printf("Trovato il link %s\n",drn->d_name);
fd=open(drn->d_name,O_RDONLY);
while ( read(fd, &c, 1) > 0)
write(STDOUT_FILENO, &c, 1);
}
}
closedir(dp);
exit(0);
}


potreste dirmi a cosa servono le stringhe


struct stat buf;
struct dirent *drn;


Grazie mille x l'aiuto ;)

goldorak
18-04-2004, 17:22
struct stat e struct dirent sono due tipi di dati definiti negli headers files all'inizio del tuo programma.
buf e' una variabile di tipo "struct stat" e drn e' una variabile di tipo "puntatore a struct dirent"

cionci
18-04-2004, 17:24
struct definisce una struttura dati che contiene al suo interno altre strutture dati...
Data una istanza di una struct è possibile selezionarne i membri interni tramite l'operatore "."...se si ha un puntatore ad una struttura è possibile selezionarne i emmbri itnerni tramite l'operatore "->"...
I membri interni ad una struct possono essere a loro volta struct...

Ad esempio:

struct uno {
int a;
char b;
};

struct due {
int d;
struct uno c;
struct uno *p;
};

...
...
void f()
{
struct uno s1;
struct due s2;
s1.a = 10; /*inserisco 10 nel membro a*/
s1.b = "x"; /*inserisco "x" nel membro b*/
s2.p = &s1; /*s2.p punta a s1*/
s2.c.a = s2.p->a;
s2.c.b = s2.p->b;
}

dirent e stat sono dichiarate (con struct dirent {....};) all'interno di uno degli header che hai incluso...