Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.03.2015, 11:34   #1
ozon11
 
Регистрация: 03.12.2014
Сообщений: 7
По умолчанию WinAPI для обработки файлов (С, С++)

Доброго времени суток! Помогите пожалуйста написать программу поиска файлов по следующим требованиям:
Вывести список файлов из своей личной директории и temp
Проверить, есть ли в текущей директории файл Example8.Txt, Example82.txt
Если ЕСТЬ, то
Вывести атрибуты файлов (даты модификации , размеры )
Сохранить под названием ( скопировать ) в файл New. Txt файл с новой датой, под названием ( скопировать ) в файл OLD. Txt файл с старой датой
Создать директорию Сору /Копия и скопировать в нее 1-е 8 файлов из личной директории при сортировке по размеру.
ozon11 вне форума Ответить с цитированием
Старый 04.03.2015, 11:53   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

ну и? трудности в чем? какие вопросы? наработке ваши где?
p51x вне форума Ответить с цитированием
Старый 04.03.2015, 13:24   #3
ozon11
 
Регистрация: 03.12.2014
Сообщений: 7
По умолчанию

Непонятно само задание, ну и в программировании не особо силен... как-то так(
ozon11 вне форума Ответить с цитированием
Старый 04.03.2015, 14:21   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Вы пробовали задание читать?

Цитата:
Вывести список файлов из своей личной директории и temp
Что не понятного? В директориях есть файлы надо показать их список. Для получение конкретных папок "своей личной директории" и "temp" есть конкретные винапи.. гуглится и мсднться легко.

Цитата:
Проверить, есть ли в текущей директории файл Example8.Txt, Example82.txt
Проверить есть или нет такие файлы.

Цитата:
Если ЕСТЬ, то
Вывести атрибуты файлов (даты модификации , размеры )
Если есть получить атрибуты и вывести некоторые из них.

Цитата:
Сохранить под названием ( скопировать ) в файл New. Txt файл с новой датой, под названием ( скопировать ) в файл OLD. Txt файл с старой датой
Очевидно кривой перевод, но скорее всего надо сравнить даты из предыдущего пункта и скопировать один файл в нью, другой в олд.

Цитата:
Создать директорию Сору /Копия и скопировать в нее 1-е 8 файлов из личной директории при сортировке по размеру.
Создать директорию. В личной директории отсортировать файлы по размеру и 8 первых скопировать в созданную директорию.

Цитата:
ну и в программировании не особо силен
Тогда раздел фриланса вас ждет. Ну или можете сменить направление/факультет пока не поздно и заняться более интересной профессией.
p51x вне форума Ответить с цитированием
Старый 05.03.2015, 07:52   #5
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Пример программы, которая выводит список файлов из директории temp
Код:
#include <windows.h>
#include <stdio.h>
#include <string.h>

void main()
{
char buffer[256];
HANDLE hl;
WIN32_FIND_DATA wf;

GetTempPath(255, buffer);
printf("%s\n", buffer);

buffer[strlen(buffer)] = '*';
buffer[strlen(buffer)+1] = '\0';

hl = FindFirstFile(buffer, &wf); 
printf("%s\n", wf.cFileName); 
while(FindNextFile(hl, &wf) ) 
printf("%s\n", wf.cFileName); 

}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 05.03.2015, 07:58   #6
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Получение имени пользователя
Код:
#include <windows.h>
#include <stdio.h>
#include <locale.h>

#pragma comment(lib, "advapi32.lib")

void main()
{
char username[255];
DWORD sz;

setlocale(LC_ALL, "Russian");

GetUserName(username, &sz);
printf("%s\n", username);
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 05.03.2015, 08:14   #7
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Получение списка файлов из своей личной директории.
Под личной директорией будем понимать C:\Documents and Settings\%username%\Documents где %username% имя пользователя

Код:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <locale.h>

#pragma comment(lib, "advapi32.lib")

#include <stdio.h>
#include <malloc.h>

// буфер
struct buf 
{ 
unsigned char* buf1; 
int n; 
};

void print1(struct buf* t) 
{ 
int i;
if (t->buf1) 
{ 
for(i=0;i<t->n;i++) 
printf("%c", t->buf1[i]); 
printf("\n"); 
}
}

void add0(struct buf* t, unsigned char a) 
{ 
t->buf1 = (unsigned char*) malloc( 2*sizeof(unsigned char)); 
t->buf1[0] = a; 
t->buf1[1] = '\0'; 
t->n = 1; 
}

void add(struct buf* t, unsigned char a) 
{  
int i; 
unsigned char* buf2;
if (t->n == 0) 
{ 
add0(t, a); 
print1(t); 
return; 
} 
buf2 = (unsigned char*) malloc(sizeof(unsigned char)*(t->n+2)); 
for(i=0;i<t->n;i++) 
buf2[i] = t->buf1[i]; 
buf2[t->n] = a; 
buf2[t->n+1] = '\0'; 
t->n = t->n+1; 
free(t->buf1); 
t->buf1 = buf2; 
print1(t); 
}

int len(unsigned char* a) 
{ 
int n,i; 
n = 0; 
for(i=0; a[i]!='\0'; i++) 
n++; 
return n; 
}

void add10(struct buf* t, unsigned char* a, int n1) 
{   
int i; 
t->buf1 =  (unsigned char*) malloc(sizeof(unsigned char)*(n1+1)); 
for(i=0;i<n1;i++) 
t->buf1[i] = a[i];  
t->buf1[n1] = '\0'; 
t->n = n1; 
}

void add1(struct buf* t, unsigned char* a) 
{ 
int i, j; 
unsigned char* buf2;
int n1 = len(a); 
if (t->n == 0) 
{ 
add10(t,a, n1); 
print1(t); 
return; 
} 

buf2 = (unsigned char*) malloc(sizeof(unsigned char)*(t->n + n1+2)); 

for(i=0;i<t->n;i++) 
buf2[i] = t->buf1[i]; 
for(i=t->n,j=0;j<n1;j++, i++) 
buf2[i] = a[j]; 
buf2[t->n+n1] = '\0'; 
t->n = t->n + n1; 
printf("%d\n", t->n);
free(t->buf1);
t->buf1 = buf2; 
print1(t); 
}



void main()
{
char username[255];
DWORD sz;
HANDLE hl;
WIN32_FIND_DATA wf;
struct buf a;
a.n = 0;
a.buf1 = 0;

setlocale(LC_ALL, "Russian");

GetUserName(username, &sz);
printf("%s\n", username);

add1(&a, "C:\\Documents and Settings\\");
add1(&a, username);
add1(&a, "\\Documents\\");
add(&a, '\\');
add(&a, '*');


hl = FindFirstFile(a.buf1, &wf); 
printf("%s\n", wf.cFileName); 
while(FindNextFile(hl, &wf) ) 
printf("%s\n", wf.cFileName); 
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 05.03.2015, 08:30   #8
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,601
По умолчанию

Проверка на существование файла Example8.Txt

Код:
void main()
{
char username[255];
DWORD sz;

struct buf a2;
a2.n = 0;
a2.buf1 = 0;

setlocale(LC_ALL, "Russian");

GetUserName(username, &sz);
printf("%s\n", username);

add1(&a2, "C:\\Documents and Settings\\");
add1(&a2, username);
add1(&a2, "\\Documents\\Example8.Txt");

if (CreateFile(a2.buf1, GENERIC_READ, 0, 0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0) == INVALID_HANDLE_VALUE)
printf("не существует\n");

}
Получение атрибутов осуществляется функцией GetFileAttributes(имя_файла);

Открытие файла на чтение и на запись осуществляет функция CreateFile

Создание новой директории осуществляет функция CreateDirectory(название_директории , атрибуты_безопасности)

Создание директории и копирование файлов можно осуществить с использованием команд командной строки, вызов которых можно осуществить функцией system языка С/С++.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 07.03.2015, 00:19   #9
ozon11
 
Регистрация: 03.12.2014
Сообщений: 7
По умолчанию

Огромное спасибо challengerr, очень вам благодарен!
ozon11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для обработки, проверки и подготовке файлов для импорта в основную программу AlexVN Фриланс 14 17.02.2014 21:14
Составление и отладка программ для создания и обработки типизированных, и текстовых файлов. Makos Паскаль, Turbo Pascal, PascalABC.NET 1 21.04.2013 21:26
Файловый тип. Переменная для обработки текстовых файлов(pascal)) Георгий Златов Помощь студентам 1 27.01.2013 18:22
Нужен макрос или программа для пакетной обработки файлов srgg Microsoft Office Word 2 23.05.2012 13:05
Макрос в Excel для обработки группы файлов ad_sum Microsoft Office Excel 1 29.12.2007 16:56