ne_viens
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору #include <windows.h> #include <stdlib.h> #include <stdio.h> #define PATH "C:\\" #define INFILE "test.txt" #define OUTFILE "out.txt" ////////////////////////////////////////////////////////////////////////////////////////////////////// void findFile(char* wrkdir, char* fname, FILE* f) { HANDLE hFile; WIN32_FIND_DATA file_data; char wrkdirtemp[MAX_PATH], buf[MAX_PATH]; strcpy(wrkdirtemp, wrkdir); if(wrkdirtemp[strlen(wrkdirtemp) - 1] != '\\') strcat(wrkdirtemp, "\\"); sprintf(buf, "%s*", wrkdirtemp); hFile = FindFirstFile(buf, &file_data); if(INVALID_HANDLE_VALUE == hFile) return; do { if(file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if('.' == *(short*)&file_data.cFileName || '..' == *(short*)&file_data.cFileName) continue; sprintf(buf, "%s%s", wrkdirtemp, file_data.cFileName); findFile(buf, fname, f); } else if(!strcmp(file_data.cFileName, fname)) fprintf(f, "%s%s\r\n", wrkdirtemp, file_data.cFileName); } while(FindNextFile(hFile, &file_data)); FindClose(hFile); } ////////////////////////////////////////////////////////////////////////////////////////////////////// int main() { FILE *fi, *fo; char *path, *ptr, line[0x400]; if(!(fi = fopen(INFILE, "rb"))) { puts("Can't open an input file\n"); return -1; } if(!(fo = fopen(OUTFILE, "wb"))) { puts("Can't create an output file\n"); return -1; } path = PATH; while(fgets(line, sizeof(line), fi)) { for(ptr = line + strlen(line); (*ptr != '\\') && (*ptr != '/'); --ptr) if('\r' == *ptr || '\n' == *ptr) *ptr = 0; findFile(path, ptr + 1, fo); } fclose(fi); fclose(fo); return 0; } | Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 15:48 02-08-2013 | Исправлено: ne_viens, 15:49 02-08-2013 |
|