|
发表于 2004-11-3 10:19:06
|
显示全部楼层
* list.c - C version of a simple UNIX ls utility */
/* c89 list.c -o list */
/* need types.h and dir.h for definitions of scandir and alphasort */
#include <sys/types.h>
#include <sys/dir.h>
/* definition for getwd ie MAXPATHLEN etc */
#include <sys/param.h>
#include <stdio.h>
#define FALSE 0
#define TRUE !FALSE
/* prototype std lib functions */
extern int alphasort();
/* variable to store current path */
char pathname[MAXPATHLEN];
main()
{ int count,i;
struct direct **files;
int file_select();
if (getwd(pathname) == NULL )
{ printf("Error getting path\n);
exit(1);
}
printf("Current Working Directory = %s\n",pathname);
count =
scandir(pathname, &files, file_select, alphasort);
/* If no files found, make a non-selectable menu item */
if (count <= 0) {
printf("No files in this directory\n");
exit(0);
}
printf("Number of files = %d\n",count);
for (i=1;i<count+1;++i)
{ printf("%s ",files[i-1]->d_name);
if ( (i % 4) == 0) printf("\n");
}
printf("\n"); /* flush buffer */
}
int
file_select(struct direct *entry)
{ /* ignore . and .. entries */
if ((strcmp(entry->d_name, ".") == 0) ||
(strcmp(entry->d_name, "..") == 0))
return (FALSE);
else
return (TRUE);
} |
|