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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2012, 16:29   #1
Koloturka
Новичок
Джуниор
 
Регистрация: 10.12.2012
Сообщений: 1
По умолчанию Работа с файлами(сумма эл массива) (Win32 API C++)

Текстовый файл содержит матрицу из 20 элементов (4х5). Определить сумму всех элементов и записать результат в бинарный файл. Необходимо решить эту задачу с помощью средств Win32 API, с такими функциями, как ReadFile, WriteFile и т.п.
В чем проблема: функция ReadFile считывает данные в каком-то адовом коде(типо 857333214(проверял выводом в консоли, но потом нашел на каком-то из форумов, что консоль не понимает юникод и в этом вся проблема), хотя в матрице числа 7 2 4 5...), и я не могу понять, как оперировать с такими считанными данными. Главное, что если скопировать из одного файла данные в другой, то в бинарном(выходящем) отображается матрица такая, какая и в текстовом(входящем).

Код:
#include "stdafx.h"
#include "windows.h"

using namespace std;

const int BUFF_SIZE = 9;

int _tmain(int argc, _TCHAR* argv[])
{
	HANDLE a;
	DWORD k;
	DWORD Size;
	HANDLE b;
	int sum = 0;
	unsigned int buf[BUFF_SIZE];
	

	a = CreateFile(TEXT("l3a.txt"), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);            
	if (a == INVALID_HANDLE_VALUE)
	{
		cout<<"File a opening error"<<'\n';
		system("pause");
		return 1;
	}
	b = CreateFile(TEXT("l3b.bin"), GENERIC_WRITE, FILE_SHARE_READ, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);                  
	if (b == INVALID_HANDLE_VALUE)
	{
		cout<<"File a opening error"<<'\n';
		return -1;
	}
	Size=GetFileSize(a, &Size);
	if(Size>255)
	{
		Size=255;
	}
	ReadFile(a, buf, Size, &k, NULL);
	for (int i = 0; i < Size; i++)
	{
		sum = sum + buf[i];
	}
	WriteFile(b, &sum, 1, &k, NULL);
	CloseHandle(a);
	CloseHandle(b);

	system("pause");
	return 0;
}
Вот код, в котором я тестировал просто пока работу с одной строкой, содержание которой "1 2 3 4 5", в бинарном файле получил "a".
Просьба: подсказать в чем тут дело или написать рабочую программу, для того, чтоб я потом ее разобрал). Заранее спасибо.
Koloturka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Win32 API Tymchuk C++ Builder 0 16.05.2012 21:53
win32 API.Visual Studio 2008.Создание проекта Win32 Aleksandr_Yanov Visual C++ 2 12.09.2010 13:09
Win32 API. VS2008. Как создать приложение win32 в vs2008? Aleksandr_Yanov Visual C++ 4 12.09.2010 00:59
Win32 Api revaldo666 Win Api 10 06.07.2010 00:48
Win32 Api! alexov Общие вопросы C/C++ 7 09.02.2009 22:25