All pastes #448724 Raw Edit

Stuff

public c v1 · immutable
·published 2007-04-19 20:57 UTC
rendered paste body
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <dirent.h>#include <unistd.h>#define N 255typedef char PathToFile[N];//================ deklaracje funkcji =============char Menu(void);void GetFilesListFromFile(PathToFile *FileList);void GetFilesListFromDir (PathToFile *FileList);int main(void){		PathToFile    *PathesToFile;		switch(Menu())		{			case 0 : 	GetFilesListFromFile(PathesToFile);						break;							case 1 : 	GetFilesListFromDir(PathesToFile);						break;					default : 						{						printf("\nbledny wybor");				  		exit;					}					break;							}			while(PathesToFile)		{			printf("%s",PathesToFile);			PathesToFile++;		}		free(PathesToFile);	return 0;}//====== zwraca wybor uzytkownika ======char Menu(void){	char Choice;		printf("\n\t\t=== menu ===\n\n");		printf("\t 0 - wczytaj sciezki do plikow z pliku tekstowego\n");		printf("\t 1 - wszystkie pliki w wybranym katalogu\n");		printf("\n\n Twoj wybor: ");		scanf("%c\n",&Choice);			return Choice;}//======== pobiera sciezki do plikow z pliku tekstowego ========void GetFilesListFromFile(PathToFile *FileList){	FILE 		*FileFd;	int		Counter = 0;	PathToFile	Line;	PathToFile      *FileList_ptr = FileList;	PathToFile	FileName;				printf("\n podaj sciezke do pliku z danymi: ");			fgets(FileName, N, stdin);			FileFd = fopen(FileName, "r");		//===== zliczenie linii w pliku =====		while( !feof(FileFd) )		{			if( fgetc(FileFd) == '\n' )			{				++Counter;			}		}		fseek(FileFd, 0, SEEK_SET);	//przejscie na poczatek pliku				FileList = (PathToFile *)calloc( Counter+1, N );		//====== wczytanie sciezek plikow ======		while( !feof(FileFd) )		{			if( fgets(Line, N, FileFd) != NULL )			{			    strcpy(*FileList, Line);			    FileList++;			}		}					FileList = FileList_ptr;		fclose(FileFd);}//======= pobiera sciezki do plikow z aktualnego katalogu ========void GetFilesListFromDir(PathToFile *FileList){	DIR 		*Dir;	struct dirent 	*Drnt;	int 		Counter = 0;	PathToFile	*FileList_ptr = FileList;	PathToFile	DirName;		printf("\npodaj sciezke do katalogu z plikami: ");		fgets(DirName, N, stdin); 		Dir = opendir(DirName);		//=== jesli zmiana katalogu roboczego sie nie powiedzie ===		if( chdir(DirName) )		{			perror("chdir");			exit;		}		//===== zliczenie liczby plikow w katalogu =====		while( Drnt = readdir(Dir) )		{			++Counter;		}				rewinddir(Dir);		//przejscie na poczatek katalogu		FileList = (PathToFile *)calloc(Counter+1, N);		while( Drnt = readdir(Dir) )		{			strcpy( *FileList, Drnt->d_name );	//wczytanie nazwy pliku			FileList++;		}					FileList = FileList_ptr;		closedir(Dir);}