Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2022, 11:02   #1
apofioz
Пользователь
 
Регистрация: 22.01.2014
Сообщений: 95
По умолчанию _tfopen_s, не записывает информацию в файл.

Здравствуйте! Нужно было в файл записать информацию я сформировал строку, затем открыл поток/файл
Код:
errno_t IsError = _tfopen_s(&hFout,
						TEXT("D:\\EmployeeRecord.txt"),
						TEXT("a"));
но, к сожалению, записывается в файл только часть строки, как так получается? Вот код той части, где всё происходит:
Код:
*(LPWORD)chBuf = (WORD)128;
	int nNum = SendMessage(hEdit, EM_GETLINE, 0, (LPARAM)(LPTSTR)&chBuf);
	if (nNum)
	{
	/*Это делал для тренировки, можно было сразу всю строку записать. Ввожу ФИО, хочу в файле сформировать что-то такое: [ФИО]{Пол}{Образование} */
		TCHAR* NextToken = NULL;
		TCHAR* chTmp = _tcstok_s(chBuf, TEXT(" ,.;"), &NextToken);
		TCHAR sz[128];
		_stprintf_s(sz, 128, TEXT("%s"), TEXT("["));
		for (size_t i = 0; (chTmp); ++i)
		{
			_tcscat_s(sz, 128, chTmp);
			chTmp = _tcstok_s(NULL, TEXT(" ,.;"), &NextToken);
			if(chTmp)
			      _tcscat_s(sz, 128, TEXT(" "));
		}
		_tcscat_s(sz, 128, TEXT("]"));

		FILE* hFout;
		errno_t IsError = _tfopen_s(&hFout,
						        TEXT("D:\\EmployeeRecord.txt"),
						        TEXT("a"));
		if (IsError != NULL)
	       {
			MessageBox(NULL, TEXT("Can't open file"),
							TEXT("Error"), MB_OK);
						return 0;
		}		

		int i;
		for (i = 0; i < 2; ++i)
		{
			if (SendMessage(hButtonSex[i], BM_GETCHECK, 0, 0L))
				break;
		}
		_tcscat_s(sz, 128, TEXT("{"));
		if(i < 2)
		      _tcscat_s(sz, 128, szSexNames[i]);
		_tcscat_s(sz, 128, TEXT("}"));
		for (i = 0; i < 4; ++i)
		{
			if (SendMessage(hButtonEduc[i], BM_GETCHECK, 0, 0L))
				break;
		}
		_tcscat_s(sz, 128, TEXT("{"));
		if(i < 4)
		    _tcscat_s(sz, 128, szEducNames[i]);
		_tcscat_s(sz, 128, TEXT("}"));
					

		if (hFout)
		      fputws(sz, hFout);
		/*В файле появляется [ФИО]{, и всё, хотя строка сформировалась полностью.*/
		fclose(hFout); //Здесь я правильно закрываю _tfclose нет.
		_fcloseall();
      return 0;
Видимо, это связано в вводом русских символов. Если вводить латиницу, то всё нормально, а вот с русским текстом проблемы.

Последний раз редактировалось apofioz; 22.09.2022 в 11:30.
apofioz вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать программу, которая в файл g записывает положительные числа, а файл h - отрицательные Гарри Паскаль, Turbo Pascal, PascalABC.NET 1 12.11.2015 22:43
Задание по Visual c++ 2013, Нужно создать файл, записать в него информацию, а затем по другой кнопке считать информацию из файла. Rastoried Visual C++ 5 16.03.2014 20:21
Не записывает в файл. digiwo C# (си шарп) 3 12.02.2014 07:15
код, который должен открывать файл, находить в нем определенный символ и заменять его на другой, не записывает в файл Dima-War Общие вопросы C/C++ 2 14.12.2013 21:35
Не записывает текст в файл .( gefest58 Общие вопросы Delphi 1 24.04.2011 19:56