| Цитата(Cricket2007 @ 30.7.2008, 18:48) | | Всем доброго времени суток ! Хочу сделать программу поиска файлов на HDD (по имени файла), но никак не могу даж представить себе как это сделать ( тоесть я хочу сделать без всяких готовых функций чтоб понять принцип как это все работает ) |
Эээ Совсем без 'готовых' функций?
| Цитата | вот как сделать поиск элемента в массиве я понял а вот на жестком как? подскажите хоть с чего начать плиз
|
С изучения интерфейса ATA (IDE), формата файловой системы (FAT32 или NTFS - на выбор). Если же некоторые 'готовые' функции допускаются, то с чтения MSDN на тему FindFirstFile, FindNextFile и FindClose. Или же opendir, readdir, closedir. Или же findfirst, findnext
| Цитата | или напишите примерчих хотяб самый простой
|
| Код | /* findfirst and findnext example */
#include <stdio.h> #include <dir.h>
int main(void) { struct ffblk ffblk; int done; printf("Directory listing of *.*\n"); done = findfirst("*.*",&ffblk,0); while (!done) { printf(" %s\n", ffblk.ff_name); done = findnext(&ffblk); }
return 0; }
|
| Код | /* opendir.c - test opendir(), readdir(), closedir() */ #include <dirent.h> #include <stdio.h> #include <stdlib.h> void scandir(char *dirname) { DIR *dir; struct dirent *ent; printf("First pass on '%s':\n",dirname); if ((dir = opendir(dirname)) == NULL) { perror("Unable to open directory"); exit(1); } while ((ent = readdir(dir)) != NULL) printf("%s\n",ent->d_name); printf("Second pass on '%s':\n",dirname);
rewinddir(dir); while ((ent = readdir(dir)) != NULL) printf("%s\n",ent->d_name); if (closedir(dir) != 0) perror("Unable to close directory"); } void main(int argc,char *argv[]) { if (argc != 2) { printf("usage: opendir dirname\n"); exit(1); } scandir(argv[1]); exit(0); }
|
| Код | #define _WIN32_WINNT 0x0400
#include <windows.h> #include <stdio.h>
int main(int argc, char *argv[]) { WIN32_FIND_DATA FindFileData; HANDLE hFind;
printf ("Target file is %s.\n", argv[1]); hFind = FindFirstFile(argv[1], &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { printf ("Invalid File Handle. GetLastError reports %d\n", GetLastError ()); return (0); } else { printf ("The first file found is %s\n", FindFileData.cFileName); FindClose(hFind); return (1); } }
|
|