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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2010, 15:51   #1
delias
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 27
По умолчанию Портится кодировка при выводе массива в файл

Подскажите, нужно массив вывести в файл, но только так чтобы можно было его потом прочитать человеку.
Строка сохраняется в файле без проблем, всё читабельно:
Код:
char a1[40]="1234567";				
hFile = CreateFile ("test.txt", GENERIC_WRITE, 0, 
	NULL, CREATE_ALWAYS, 0, NULL);
WriteFile (hFile, a1, sizeof(a1), &dwSort, FILE_BEGIN);	
CloseHandle (hFile);
А вот если пытаюсь числовой массив преобразовывать в текст и записывать в файл, то в итоге файл нечитабелен, вместо символов квадратики.
Делаю так:
Код:
char a1[40];
strcpy(a1,"");
for (int i=0;i<10;i++)
{
	char buf[2];
	itoa (a[i],buf,10);
	strcat(a1,buf);	
}				
hFile = CreateFile ("test.txt", GENERIC_WRITE, 0, 
	NULL, CREATE_ALWAYS, 0, NULL);
WriteFile (hFile, a1, sizeof(a1), &dwSort, FILE_BEGIN);	
CloseHandle (hFile);
Посоветуйте, как решить возникшую проблему?

Последний раз редактировалось Stilet; 20.04.2010 в 10:16.
delias вне форума Ответить с цитированием
Старый 29.03.2010, 19:08   #2
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

Ну, во-первых, в char [2] поместятся только числа от 0 до 9. Во-вторых, покажите массив a.
Д'якон вне форума Ответить с цитированием
Старый 29.03.2010, 19:29   #3
delias
Пользователь
 
Регистрация: 31.10.2009
Сообщений: 27
По умолчанию

Цитата:
Во-вторых, покажите массив a.
int a[10]={1,2,3,4,5,6,7,8,9};
delias вне форума Ответить с цитированием
Старый 20.04.2010, 10:05   #4
UginL7
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 14
По умолчанию

Если ещё актуально, то вот код, который всё правильно выводит в файл. Правильно - т.е. без квадратиков, а цифры
Код:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <Windows.h>

void main(void)
{
	HANDLE hFile;
	char str_mass[40]={0};
	char buf[10];
	int i;
	DWORD dwReal;
	for(i = 0; i < 10; i++)
	{
		itoa(i, buf, 10);
		strcat(str_mass, buf);
		printf("%c", str_mass[i]);
	}
	hFile = CreateFile("c:\\test.txt", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL );
	WriteFile(hFile, str_mass, strlen(str_mass), &dwReal, NULL );
	CloseHandle(hFile);
	getch();
}
Victōrem a victo superāri saepe vidēmus.
UginL7 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема при выводе с бинарного файла... xVxSeRGxVx Общие вопросы C/C++ 1 13.01.2010 19:08
Ошибка при выводе инфо из БД Xeon332 PHP 4 30.12.2009 05:41
глюк при выводе в консоль shurik_7866 Общие вопросы C/C++ 0 07.11.2009 00:30
Скрытие ячеек при выводе на печать Ensoph Microsoft Office Excel 4 04.11.2009 23:42
Как задать курсив и вид шрифта при выводе на экран? prikolist Помощь студентам 4 20.06.2008 14:54