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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2022, 11:02   #1
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 208
По умолчанию _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 вне форума Ответить с цитированием