Ср, 07.12.2016, 16:25
Форум інформатиків України
Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Вітання на форумі
Незнайомець
Вітаємо на форумі,
Незнайомцю!

   
зареєструйтесь
Перед реєстрацією обов’язково прочитайте:
Оновлення Учасники Пошук
Особисті повідомлення
Видавництво ’’Аспект’’ Видавництво
Безлимитный хостинг, бесплатный домен, бесплатный хостинг, Хостинг, dedicated, сервер, хостинг в Европе, хостинг в Германии, выделенный сервер

Сторінка 1 з 11
Модератор форуму: Ktara, Bandalak, НІКОЛЯ, volevikt 
Форум інформатиків » РОЗДІЛ I: ІНФОРМАТИКА, ПРОБЛЕМИ, ОБГОВОРЕННЯ, ВИРІШЕННЯ » 1.1 Запитання та відповіді (FAQ) » Як краще написати цей код? Мета - навчання, вдосконалення.
Як краще написати цей код? Мета - навчання, вдосконалення.
Дмитроволодимирович Дата: Нд, 10.07.2016, 15:56 | Повідомлення № 1
Новий користувач
Повідомлень: 6
Нагороди: 0
Рейтинг: 0

Код
#include <windows.h>

#define STRLEN(x) (sizeof(x)/sizeof(TCHAR) - 1)
const TCHAR szMsg[] = L"What's your name?\n";

void ChangeTextColor(HANDLE hSomeHandle) {
  INT nArgs = 0;
  LPWSTR lpCommandLine = GetCommandLine();
  LPWSTR* lpArgs = CommandLineToArgvW(lpCommandLine, &nArgs);
  if(nArgs >= 2 && 0 == lstrcmpi(lpArgs[1], L"green")) {
    SetConsoleTextAttribute(hSomeHandle, FOREGROUND_GREEN);
  }
  LocalFree(lpArgs);
}

int main() {
  HANDLE hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
  HANDLE hStdin = GetStdHandle(STD_INPUT_HANDLE);
  TCHAR szName[16];
  TCHAR szResp[32];
  DWORD dwCount = 0;

  ChangeTextColor(hStdout);

  WriteConsole(hStdout, &szMsg, STRLEN(szMsg), &dwCount, NULL);
  ReadConsole(hStdin, &szName, STRLEN(szName), &dwCount, NULL);

  if(dwCount >= 2 &&
    '\n' == szName[dwCount-1] &&
    '\r' == szName[dwCount-2]) {
    szName[dwCount-2] = '\0';
  } else if(dwCount > 0) {
    szName [dwCount]= '\0';
  }

  wsprintf(szResp, L"Hello, %s!\n", szName);
  WriteConsole(hStdout, &szResp, lstrlen(szResp), &dwCount, NULL);

  ExitProcess(0);
}

Помилки
C: \ API \ Hello \ Hello.cpp | 4 | error: character array initialization string of wide characters |
C: \ API \ Hello \ Hello.cpp | 8 | error: cannot convert «LPSTR {aka char *}» to «LPWSTR {aka wchar_t *}» in initialization |
C: \ API \ Hello \ Hello.cpp | 10 | error: cannot convert «LPWSTR {aka wchar_t *}» to «LPCSTR {aka const char *}» for argument «1» to «int lstrcmpiA (LPCSTR, LPCSTR)» |
C: \ API \ Hello \ Hello.cpp | 36 | error: cannot convert «const wchar_t *» to «LPCSTR {aka const char *}» for argument «2» to «int wsprintfA (LPSTR, LPCSTR, ...) »|
|| === Build failed: 4 error (s), 0 warning (s) (0 minute (s), 3 second (s)) === |

Ну, по частинах. Щось таке завжди діє


Код
[b]char str1[45]="ОЙ ТАМ У ПОЛИ КРИНИЧКА";
        char str2[]="ТАМ ХОРОША ВОДИЧКА";

Чом би йому не спрацювати й зараз - все начебто дуже схоже?

Середовище в мене Code::Blocks, компілятор mingw32-g++, проєкт я взагалі не створював. Якщо це буде краще, тоді, будь ласка вкажіть точно який. Але дивиться що трапиться, надпис кодеблок перетворюється на посилання без жодних моїх зусиль або побажань! ви теж це бачіте?


Відредаговано: Дмитроволодимирович - Нд, 10.07.2016, 16:13
Форум інформатиків » РОЗДІЛ I: ІНФОРМАТИКА, ПРОБЛЕМИ, ОБГОВОРЕННЯ, ВИРІШЕННЯ » 1.1 Запитання та відповіді (FAQ) » Як краще написати цей код? Мета - навчання, вдосконалення.
Сторінка 1 з 11
Пошук:


© Форум інформатиків України, 2007-2016.