Pozdrav! Evo, imam jedan zadatak na kojem sam malo "zaštekao". Naime, trebam napisati četiri funkcije za rad s fajlovima (na UNIX-u). Ovo je kod koji imam zasad (nemam praktički ništa):
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <time.h>
#include <utime.h>
#include <malloc.h>
#include <string.h>
#include <stdio.h>
#include "datoteke.h"
/*!
* Dohvaca sadrzaj direktorija = popis datoteka
* \param direktorij Ime direktorija (relativno u odnosu na program)
* \param broj Adresa gdje ce se pohraniti broj datoteka
* \returns polje s imenima datoteka, tj. kazaljka na "char *imena[*broj]"
* Mjesto za imena se zauzima s 'malloc', nakon sto se izracunalo koliko
* prostora treba za sve [ broj*sizeof(char *) + zbroj velicina za sva imena ]
*/
char **dohvati_datoteke ( const char *direktorij, int *broj )
{
/* za napraviti */
struct dirent *de = NULL;
DIR *d = NULL;
struct stat statbuf;
struct tm *timeinfo;
char **imena;
d = opendir ( &direktorij ); /* 'otvara' direktorij */
if ( d == NULL )
{
perror ( "opendir" );
return 2;
}
while ((de = readdir (d) != NULL) {
if (de->d_name[0] == '.')
continue;
return NULL;
}
/*!
* Usporedjuje dvije datoteke (samo atribute velicine i vremena zadnje promjene)
* \param ime1 Ime prve datoteke
* \param ime2 Ime druge datoteke
* \returns 0, ako su datoke jednake, 1 inace
*/
int usporedi ( const char *ime1, const char *ime2 )
{
/* za napraviti */
fprintf ( stderr, "Nije implementirano!\n" );
return 0;
}
/*!
* Kopira prvu datoteku u drugu, pritom ocuva i vremena zadnje promjene
* \param ime1 Ime prve datoteke
* \param ime2 Ime druge datoteke
* \returns 0, ako je kopiranje uspjesno, 1 inace
*/
int kopiraj_datoteku ( const char *ime1, const char *ime2 )
{
/* za napraviti */
fprintf ( stderr, "Nije implementirano!\n" );
return 0;
}
/*!
* Dohvaca i vraca vrijeme zadnje promjene datoteke u formatu:
* YYYY-MM-DD_HH-MM-SS, npr. 2010-07-21_17-08-05
* \param ime Ime datoteke
* \param vrijeme Adresa za smjestaj vremena
* \returns 0, ako je dohvat uspjesan, 1 inace
*/
int vrijeme_zadnje_promjene ( const char *ime, char *vrijeme )
{
/* za napraviti */
fprintf ( stderr, "Nije implementirano!\n" );
return 0;
}
E, sad, meni bi trebale neke smjernice što da točno napravim jer nemam baš nekih ideja. Započeo sam funkciju dohvati datoteke i sad sam zapeo kod dijela gdje pohranjujem imena datoteka. Ideja mi je da while petljom prolazim kroz direktorij i pritom u neku matricu pohranjujem imena fajlova koji su u tom direktoriju. E sad, napravio sam dupli pointer tipa char na imena. To bi trebala biti ta matrica. Alociranje memorije je dinamičko. Kak da to točno izvedem? I jel uopće ideja dobra?