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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2013, 15:43   #1
aleshka_955
Новичок
Джуниор
 
Регистрация: 06.03.2013
Сообщений: 1
По умолчанию C++. Вывод файла.

Привет, друзья. Моя тема не совсем в этот раздел, но все же.
Задание у меня такое:
1.Проверить, есть ли в текущей директории файл Example2.bin
2.Если есть , то скопировать его в файл copy2.bint перед копированием проверить, что для этого файла есть место на диске.
3.Вывести на экран этот файл порциями по 2Кб, рассматривая этот файл как 16-ричный ( бинарный).

Первые два пункта я выполнил, а вот с третьим возникли вопросы.

Вот код программы:
#include <iostream>
#include<windows.h>
#include<winbase.h>
#include<conio.h>


using namespace std;
int main()
{
HANDLE hFind;
HANDLE hFz;
WIN32_FIND_DATA f;
WIN32_FIND_DATA a;

if(INVALID_HANDLE_VALUE!=(hFind=Fin dFirstFile("Example2.bin",&f)))
{
if((hFz=FindFirstFile("E2.bint",&a))!=INVALID_HANDLE_VALUE)
{
DWORD dwFileSize = 0;
hFind = CreateFile("Example2.bin",GENERIC_READ,0,NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
dwFileSize = GetFileSize(hFind,NULL);
__int32 FreeBytesUser, TotalBytes,TotalFreeBytes;
GetDiskFreeSpaceEx("C:\\",(PULARGE_INTEGER)&FreeBytesUser,(P ULARGE_INTEGER)&TotalBytes,(PULARGE _INTEGER)&TotalFreeBytes);

if(dwFileSize<TotalFreeBytes)
{
CopyFile("Example2.bin","E2.bint",false);
MessageBox(0,"Копирование прошло успешно", "Message", MB_OK);


hFz = CreateFile("E2.bint", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

Вот здесь сама проблемка..
int sBuffer = 99999;
char Buffer[sBuffer];
DWORD nl;
ReadFile(hFz,Buffer,sBuffer,&nl,NUL L);



....


FindClose(hFind);
FindClose(hFz);
}
else
{
MessageBox(0,"Не удалось скопировать файл из-за нехватки места на диске","Message", MB_OK);
FindClose(hFind);
FindClose(hFz);
}
}
else
{
MessageBox(0,"Файл E2.bint не найден", "Message", MB_OK);
FindClose(hFind);
FindClose(hFz);
}
}
else
{
MessageBox(0,"Файл Example2.bin не найден", "Message", MB_OK);
FindClose(hFind);
FindClose(hFz);
}
}

Последний раз редактировалось aleshka_955; 06.03.2013 в 15:52.
aleshka_955 вне форума Ответить с цитированием
Старый 08.03.2013, 00:09   #2
N[e]O
 
Регистрация: 18.08.2012
Сообщений: 4
По умолчанию

Код:
int sBuffer = 99999;
В этой строке как я понял задается размер массива. Вам нужно 2 Кб, а 99999 это не 2 килобайта. Установите значение данной переменной 2 Кб. (значение устанавливается в байтах)
N[e]O вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
очистка файла с++ и вывод из файла Tiva Помощь студентам 3 26.05.2012 18:10
ввод-вывод из файла vrtp Общие вопросы C/C++ 1 05.04.2012 08:08
вывод файла в си Shaggrath Помощь студентам 1 08.06.2011 08:01
Вывод из файла Serjuk Помощь студентам 8 17.04.2011 22:21
вывод из файла!!! Exclucive Общие вопросы C/C++ 2 24.05.2008 20:42