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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2012, 08:54   #1
ruukler
Новичок
Джуниор
 
Регистрация: 18.03.2012
Сообщений: 3
Плохо Пробема с чтением из ini файла(c++)

Я пытаюсь открыть ini файл и прочитать из него данные этим кодом:
Код:
#include <Windows.h>
#include <stdio.h>
#include <conio.h>

int main(int argc, char *argv)
{
 char *Key = new char;
 GetPrivateProfileString(L"sect1", L"key1", L"ABCDE", (LPWSTR)Key, 256, L"aa.ini");
 printf(Key);
 _getch();
 return 0;
}
Но возникает 2 проблемы:
1)aa.ini просто не читается.
2)При выводе значения default выводит ТОЛЬКО букву A.
P.S. Содержимое aa.ini:
Код:
[sect1]
key1 = testTESTtest
ruukler вне форума Ответить с цитированием
Старый 18.03.2012, 11:22   #2
Боря
Новичок
Джуниор
 
Аватар для Боря
 
Регистрация: 18.03.2012
Сообщений: 1
По умолчанию

char *Key = new char; - это
только один символ, отсюда и
"ТОЛЬКО букву А"
2: последний параметр
функции: lpFileName [in]
The name of the initialization file.
If this parameter does not
contain a full path to the file, the
system searches for the file in the
Windows directory.
Боря вне форума Ответить с цитированием
Старый 18.03.2012, 13:57   #3
ruukler
Новичок
Джуниор
 
Регистрация: 18.03.2012
Сообщений: 3
По умолчанию

Если писать так:
char *Key;
То будет access violation. Как исправить.
ruukler вне форума Ответить с цитированием
Старый 18.03.2012, 14:16   #4
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

кроме того что вы не выделили память под массив, так ещё используете юникод функцию . Решается это чтением книг по программированию.
microbit вне форума Ответить с цитированием
Старый 18.03.2012, 14:30   #5
ruukler
Новичок
Джуниор
 
Регистрация: 18.03.2012
Сообщений: 3
По умолчанию

Все, разобрался. Надо было просто освободить память.
Вот рабочий код, если кому понадобится:
Код:
#include <Windows.h>
#include <stdio.h>
#include <conio.h>

LPSTR GetValueFromINI(LPSTR FileName, LPSTR Section, LPSTR Key)
{
	char *key;
	key = (char *)malloc(256);
	GetPrivateProfileStringA(Section, Key, NULL, key, 256, FileName);
	return key;
	free(key);
}

int main(int argc, char *argv)
{
	char *TestKey = GetValueFromINI("D:\\Рабочий стол\\ini\\ini\\Debug\\aa.ini", "sect1", "key1");
	printf(TestKey);
	_getch();
	return 0;
}
ruukler вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с чтением из типизированного файла BeCTHuK Паскаль, Turbo Pascal, PascalABC.NET 2 05.10.2011 20:57
проблема с чтением из файла salwator Помощь студентам 1 23.12.2010 12:11
Проблема с чтением из файла slamm PHP 12 16.01.2010 16:40
Проблема с чтением из INI файла JustKurt Общие вопросы Delphi 3 04.08.2009 20:47
проблема с чтением из файла Tesmont Общие вопросы C/C++ 0 20.05.2009 19:39