|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Dec 2006
Messaggi: 104
|
[C unix] file
Buongiorno a tutti,
avrei bisogno di un aiuto per un problema sui file in unix da risolvere con un programma C. Mi si chiede di scrivere un programma in C che esamini il contenuto della directory corrente, verificando per ogni file regolare se la sua estensione è .c. In questo caso, verificarne i permessi di scrittura per il gruppo e visualizzare sullo standard output il contenuto del secondo file di lunghezza minore. Il programma che ho scritto arriva al punto di visualizzare il contenuto del file di lunghezza minore ( il + piccolo), come faccio a prendere il secondo più piccolo? Codice:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/types.h>
#include <dirent.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char *argv[])
{
char cwd[100],nomefile[255],buffer[4096];
DIR *dp;
struct stat st;
int i,nr,fd,lenfile,lenmin=100;
struct dirent *drn;
getcwd(cwd,sizeof(cwd));
if((dp=opendir(cwd))!=NULL)
{
while((drn=readdir(dp))!=NULL)
{
stat(drn->d_name,&st);
if(S_ISREG(st.st_mode))
{
if(strstr(drn->d_name,".c"))
{
if(st.st_mode & S_IWGRP)
printf("File %s ha il permesso di scrittura per il gruppo\n",drn->d_name);
else
printf("File non avente permesso di scrittura per il gruppo\n");
lenfile=strlen(drn->d_name);
if(lenmin>lenfile)
{
strcpy(nomefile,drn->d_name);
lenmin=lenfile;
}
}
}
}
printf("File %s di lunghezza minima %d\n",nomefile,lenmin);
fd=open(nomefile,O_RDONLY);
nr=read(fd,buffer,sizeof(buffer));
write(fd,buffer,nr);
printf("Il contenuto di nomefile buffer è %s\n",buffer);
}
closedir(dp);
exit(0);
}
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Uhm, credo che per "lunghezza del file" si intendesse la sua dimensione in byte, non la lunghezza del nome. Comunque, puoi usare una lista in cui salvi tutti i tuoi file .c e poi riordinarla a seconda della grandezza di ognuno.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:04.



















