filelist.c
来自「国外网站上的一些精典的C程序」· C语言 代码 · 共 100 行
C
100 行
/*** FILELIST.C - Creates a link list of files and returns number of** files found.**** public domain by Phi Nguyen*/#include "filelist.h"/*** Free_FileList - This function simply frees each linked list item.*/void Free_FileList(FILELIST *p){ FILELIST *next = p->next; while (NULL != next) { p->next = next->next; free(next); next = p->next; }}/*** Get_FileList - This function creates a linked list of input source** files. Wildcard specifications are accommodated.*/int Get_FileList(FILELIST *list, char **argv, int argc, int attr){ int i = 0, nCount = 0; DOSFileData file; FILELIST *base = list, *node; for ( ; i < argc; i++) { if (!FIND_FIRST(argv[i], attr, &file)) do { if (NULL == (node =(FILELIST *)malloc(LIST_SIZE))) { Free_FileList(list); list = NULL; return 0; } base->file = file; base->next = node; node->next = NULL; base = node; nCount++; } while (!FIND_NEXT(&file)); } return nCount;}#ifdef TEST#include <stdio.h>#define _A_FILE (_A_NORMAL|_A_RDONLY|_A_HIDDEN|_A_SYSTEM|_A_ARCH)main(int argc, char *argv[]){ FILELIST list, *plist = &list; int i, nFiles; if (argc < 2) { puts("Usage: FILELIST filespec ...."); return EXIT_FAILURE; } nFiles = Get_FileList(plist, argv + 1, argc - 1, _A_FILE); if (nFiles >= 0) { for (i = 0; i < nFiles; i++) { printf("%-12s %8li %2u-%02u-%02u %2u:%02u\n", ff_name(&plist->file), ff_size(&plist->file), ff_mo(&plist->file), ff_day(&plist->file), ff_yr(&plist->file) + 80, ff_hr(&plist->file), ff_min(&plist->file)); plist = plist->next; } Free_FileList(&list); } else { puts("Get_FileList() failed"); return EXIT_FAILURE; } return EXIT_SUCCESS;}#endif /* TEST */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?