Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
1 / 1 / 0
Регистрация: 30.05.2023
Сообщений: 4

Ввод с клавиатуры данных в массив

31.05.2023, 16:22. Показов 9360. Ответов 85
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Описать структуру с именем note, содержащую следующие поля:
 фамилия, имя;
 номер телефона;
 дата рождения (массив из трех чисел).
Написать программу, выполняющую следующие действия:
 ввод с клавиатуры данных в массив, состоящий из максимум 8 элементов типа note,
причем сделать возможность прервать ввод, чтобы можно было не вводить все 8
элементов; после окончания ввода отсортировать элементы массива по алфавиту;
 вывод в консоль информации о людях, чьи дни рождения приходятся на месяц, значение
которого введено с клавиатуры;
 если таких нет, вывести соответствующее сообщение;
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.05.2023, 16:22
Ответы с готовыми решениями:

Ввод с клавиатуры данных в массив
Написать программу выполняющую след. действия: -ввод с клавиатуры данных в массив состоящий из 10-ти структур типа Worker( с...

Ввод с клавиатуры данных в массив
Нужна помощь, 1)Определить класс с именем AEROFLOT, содержащий след поля: название пункта назначения рейса; номер рейса; тип...

Ввод данных в массив с клавиатуры
Ребят помогите.Нужен код , который бы заполнял массив с клавиатуры 3х4 . Вот код ввода данных с клавиатуры vvodcifri // ввод...

85
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
30.07.2023, 16:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от easybudda Посмотреть сообщение
UTF8, что в ней странного?
Попробуйте вручную вызвать coninit() перед setlocale(). Я ведь писал, что constructor - особенность gcc.
Цитата Сообщение от Наталья8 Посмотреть сообщение
Консоль виндовс наверное юникоды не выводит.
Вы же сами приводили скриншоты, где прекрасно видно как выводит.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
30.07.2023, 18:42
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Попробуйте вручную вызвать coninit() перед setlocale().
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#define _CRT_SECURE_NO_WARNINGS 1
 
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <windows.h>
#include <fcntl.h>
 
/* 
#ifdef WIN32 //специальные костыли для виндовой консоли
  #include <windows.h>
  #include "fcntl.h"
  __attribute__((constructor)) void coninit(){
    SetConsoleCP(CP_UTF8); SetConsoleOutputCP(CP_UTF8);
    _setmode(_fileno(stdout), _O_U8TEXT);
    _setmode(_fileno(stdin), _O_U16TEXT);
  }
#endif
*/
 
void coninit(){
    SetConsoleCP(CP_UTF8); SetConsoleOutputCP(CP_UTF8);
    _setmode(_fileno(stdout), _O_U8TEXT);
    _setmode(_fileno(stdin), _O_U16TEXT);
}
 
int main(){
  coninit();
  setlocale(LC_ALL, "");
  wchar_t str[100];
  wprintf(L"Проверка ввода текста в консоли. Введите текст: ");
  wscanf(L"%ls", str);
  for(int i=0; str[i]!=0; i++){
    wprintf(L"[%lc] = 0x%4X\n", str[i], (int)str[i]);
  }
  return 0;
}
cl не сдаётся!
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
C:\Users\andrew\prog\c\strings>cl rus.c
Оптимизирующий компилятор Microsoft (R) C/C++ версии 19.36.32537 для x86
(C) Корпорация Майкрософт (Microsoft Corporation).  Все права защищены.
 
rus.c
Microsoft (R) Incremental Linker Version 14.36.32537.0
Copyright (C) Microsoft Corporation.  All rights reserved.
 
/out:rus.exe
rus.obj
 
C:\Users\andrew\prog\c\strings>rus
Проверка РІРІРѕРґР° текста РІ консоли. Введите текст: йцукен
[й] = 0x 439
[ц] = 0x 446
[у] = 0x 443
[к] = 0x 43A
[е] = 0x 435
[н] = 0x 43D
 
C:\Users\andrew\prog\c\strings>
Но уже лучше - ввод адекватно воспринимает...

clang от мелкомягких на что-то там ругнулся, но таки правильно всё вышло...
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\Users\andrew\prog\c\strings>clang -Wall rus.c
rus.c:23:5: warning: call to undeclared function '_setmode'; ISO C99 and later do not support implicit function
      declarations [-Wimplicit-function-declaration]
    _setmode(_fileno(stdout), _O_U8TEXT);
    ^
1 warning generated.
 
C:\Users\andrew\prog\c\strings>a
Проверка ввода текста в консоли. Введите текст: йцукен
[й] = 0x 439
[ц] = 0x 446
[у] = 0x 443
[к] = 0x 43A
[е] = 0x 435
[н] = 0x 43D
 
C:\Users\andrew\prog\c\strings>
1
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
30.07.2023, 19:08
Цитата Сообщение от easybudda Посмотреть сообщение
на что-то там ругнулся
Ну, из текста ругани я могу предположить, что ему хедера не хватает. Вот тут написано, что должно быть <io.h>
Цитата Сообщение от easybudda Посмотреть сообщение
cl не сдаётся!
Попробуйте сохранить этот же текст в переменную и проверить по кодам чего ему не нравится. У меня-то msvs нет, мне проверять сложнее.
Кстати. Может, вы знаете как в msvs сделать аналог конструктора? Как-то не очень хочется тянуть тамошние костыли в основной код.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
30.07.2023, 22:29
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Может, вы знаете как в msvs сделать...
Понятия не имею, если честно. Я в ней только здесь студентам задачки за скромное вознаграждение решаю. А так вообще не фанат этой странной программы.
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
31.07.2023, 09:26
Цитата Сообщение от easybudda Посмотреть сообщение
cl не сдаётся!
Здесь:
Цитата Сообщение от easybudda Посмотреть сообщение
_setmode(_fileno(stdout), _O_U8TEXT);
тоже нужно _O_U16TEXT.
А это "SetConsoleCP, SetConsoleOutputCP", соответственно, вообще убрать.
2
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
31.07.2023, 10:15
Цитата Сообщение от DrOffset Посмотреть сообщение
_setmode(_fileno(stdout), _O_U8TEXT);
тоже нужно _O_U16TEXT.
А это "SetConsoleCP, SetConsoleOutputCP", соответственно, вообще убрать.
Я это проверял, становилось только хуже.
Но не исключаю, что делал что-то неправильно. Приведите полный код с вводом и выводом строки.
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
31.07.2023, 13:00
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Я это проверял, становилось только хуже.
На CL проверяли?
0
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
31.07.2023, 13:21
Цитата Сообщение от DrOffset Посмотреть сообщение
На CL проверяли?
На gcc.
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
31.07.2023, 13:24
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
На gcc.
Ну про gcc мы уже давно все с вами выяснили.
Я отвечал про cl, про компилятор из MSVS. Именно с ним были проблемы у easybudda:
Цитата Сообщение от easybudda Посмотреть сообщение
cl не сдаётся!
0
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
31.07.2023, 14:20
Цитата Сообщение от DrOffset Посмотреть сообщение
Я отвечал про cl
Ваш вариант хотя бы у вас работает?
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
31.07.2023, 15:35
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Ваш вариант хотя бы у вас работает?
Он у всех работает, если компилировать в VS, начиная с Windows Vista.
Я все объяснял здесь: Не выводятся wchar_t символы
С поправкой на Windows 10 разве что можно дополнить, что MinGW как использовал legacy-версию CRT, так и использует, но похоже у кого из MS в Windows 10 таки дошли руки в legacy CRT починить _setmode для консоли. Поэтому в Windows 10 у вас заработал _O_U16TEXT из MinGW.
0
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
31.07.2023, 16:26
Цитата Сообщение от DrOffset Посмотреть сообщение
Он у всех работает, если компилировать в VS
msvs далеко не самый приоритетный компилятор. Ту же gcc версию я могу на основной машине собрать, а на виртуалке только проверить, без необходимости тянуть туда целую IDE.
Ладно. Если уж городить костыли для совместимости с виндой, стоит и этот обдумать. Может, вы знаете какой макрос проверять чтобы отличить именно msvc от других компиляторов. Вроде пишут про _MSC_VER. Кто-нибудь у кого эта штука установлена проверьте определен ли макрос в msvc и не лезет ли он в других компиляторах
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
31.07.2023, 16:28
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Может, вы знаете какой макрос проверять чтобы отличить именно msvc от других компиляторов.
Знаю, _MSC_VER.
1
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
31.07.2023, 16:38
Тогда очередная версия нашего извращения:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
#ifdef WIN32 //специальные костыли для виндовой консоли
  #pragma warning(disable : 4996)
  #define _CRT_SECURE_NO_WARNINGS
  #include <windows.h>
  #include "fcntl.h"
  __attribute__((constructor)) void coninit(){
    SetConsoleCP(CP_UTF8); SetConsoleOutputCP(CP_UTF8);
#ifdef _MSC_VER
    _setmode(_fileno(stdout), _O_U16TEXT);
#else
    _setmode(_fileno(stdout), _O_U8TEXT);
#endif
    _setmode(_fileno(stdin), _O_U16TEXT);
  }
#else
  #define coninit()
#endif
 
int main(){
  coninit();
  setlocale(LC_ALL, "");
  wchar_t str[100];
  wprintf(L"Проверка ввода текста в консоли. Введите текст: ");
  wscanf(L"%ls", str);
  for(int i=0; str[i]!=0; i++){
    wprintf(L"[%lc] = 0x%04X\n", str[i], (int)str[i]);
  }
  return 0;
}
Кастую easybudda если ему будет не лень проверить на своих многочисленных компиляторах.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
01.08.2023, 01:40
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
ему будет не лень
Будет
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
C:\prog\c\string>gcc -Wall -o rus2_tdm_gcc.exe rus2.c
rus2.c:6: warning: ignoring '#pragma warning ' [-Wunknown-pragmas]
    6 |   #pragma warning(disable : 4996)
      |
 
C:\prog\c\string>rus2_tdm_gcc.exe
Проверка ввода текста в консоли. Введите текст: йцукен
[й] = 0x0439
[ц] = 0x0446
[у] = 0x0443
[к] = 0x043A
[е] = 0x0435
[н] = 0x043D
 
C:\prog\c\string>gcc --version
gcc (tdm64-1) 10.3.0
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
C:\prog\c\string>clang -Wall -o rus2_clang.exe rus2.c
rus2.c:28:3: warning: 'wscanf' is deprecated: This function or variable may be unsafe. Consider using wscanf_s instead.
      To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. [-Wdeprecated-declarations]
  wscanf(L"%ls", str);
  ^
C:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt\corecrt_wstdio.h:932:20: note: 'wscanf' has been
      explicitly marked deprecated here
    _Check_return_ _CRT_INSECURE_DEPRECATE(wscanf_s)
                   ^
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\include\vcruntime.h:355:55: note:
      expanded from macro '_CRT_INSECURE_DEPRECATE'
        #define _CRT_INSECURE_DEPRECATE(_Replacement) _CRT_DEPRECATE_TEXT(    \
                                                      ^
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\include\vcruntime.h:345:47: note:
      expanded from macro '_CRT_DEPRECATE_TEXT'
#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated(_Text))
                                              ^
1 warning generated.
 
C:\prog\c\string>rus2_clang.exe
Проверка ввода текста в консоли. Введите текст: йцукен
 
C:\prog\c\string>clang --version
clang version 15.0.1
Target: i686-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\Llvm\bin
 
C:\prog\c\string>
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\prog\c\string>cl rus2.c
Оптимизирующий компилятор Microsoft (R) C/C++ версии 19.34.31937 для x86
(C) Корпорация Майкрософт (Microsoft Corporation).  Все права защищены.
 
rus2.c
Microsoft (R) Incremental Linker Version 14.34.31937.0
Copyright (C) Microsoft Corporation.  All rights reserved.
 
/out:rus2.exe
rus2.obj
 
C:\prog\c\string>rus2.exe
Проверка РІРІРѕРґР° текста РІ консоли. Введите текст: йцукен
 
C:\prog\c\string>
Так же, как в самом начале было, только теперь gcc на прагма бла бла бла ругается.

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
а на виртуалке только проверить, без необходимости тянуть туда целую IDE.
А есть же способ установить мелкомягкий SDK не ставя IDE...
1
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
01.08.2023, 08:30
easybudda, а какая версия ос?

Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
C++
1
#ifdef WIN32 //специальные костыли для виндовой консоли
Здесь надо _WIN32 (именно с подчеркиванием) иначе он при компиляции в cl даже не зайдет в это условие.
Пруф: https://learn.microsoft.com/ru... w=msvc-170
_WIN32 определяется как 1, если целевой объект компиляции — 32-разрядная архитектура ARM, 64-разрядная архитектура ARM, x86 или x64. В противном случае — не определяется.
Макроса WIN32 среди предустановленных нет.

easybudda, попробуйте вот такой код (прошу прощения, я увидел, что лень, но ну раз уж взялись тестировать, то надо завершить).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <wchar.h>
#include <locale.h>
#include <stdio.h>
 
#if defined(_WIN32) //специальные костыли для виндовой консоли
#pragma warning(disable : 4996)
#define _CRT_SECURE_NO_WARNINGS
#include <windows.h>
#include <fcntl.h>
#include <io.h>
#ifndef _MSC_VER
__attribute__((constructor))
#endif
void coninit() {
#ifdef _MSC_VER
    _setmode(_fileno(stdout), _O_U16TEXT);
#else
    SetConsoleOutputCP(CP_UTF8);
    _setmode(_fileno(stdout), _O_U8TEXT);
#endif
    _setmode(_fileno(stdin), _O_U16TEXT);
}
#else
#define coninit()
#endif
 
int main() {
    coninit();
    wchar_t str[100];
    wprintf(L"Проверка ввода текста в консоли. Введите текст: ");
    wscanf(L"%ls", str);
    for (int i = 0; str[i] != 0; i++) {
        wprintf(L"[%lc] = 0x%04X\n", str[i], (int)str[i]);
    }
    return 0;
}
Да, и по моей рекомендации из поста №45 у вас должен был заработать вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#define _CRT_SECURE_NO_WARNINGS 1
 
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
#include <windows.h>
#include <fcntl.h>
 
/* 
#ifdef WIN32 //специальные костыли для виндовой консоли
  #include <windows.h>
  #include "fcntl.h"
  __attribute__((constructor)) void coninit(){
    SetConsoleCP(CP_UTF8); SetConsoleOutputCP(CP_UTF8);
    _setmode(_fileno(stdout), _O_U8TEXT);
    _setmode(_fileno(stdin), _O_U16TEXT);
  }
#endif
*/
 
void coninit(){
    _setmode(_fileno(stdout), _O_U16TEXT);
    _setmode(_fileno(stdin), _O_U16TEXT);
}
 
int main(){
  coninit();
  setlocale(LC_ALL, "");
  wchar_t str[100];
  wprintf(L"Проверка ввода текста в консоли. Введите текст: ");
  wscanf(L"%ls", str);
  for(int i=0; str[i]!=0; i++){
    wprintf(L"[%lc] = 0x%4X\n", str[i], (int)str[i]);
  }
  return 0;
}
Вы его попробовали? Причем в Windows 10 он работает и в MinGW тоже (возможно в MinGW не любой версии, но в том, что идет в MSYS2, - точно работает).
1
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
01.08.2023, 08:58
Цитата Сообщение от DrOffset Посмотреть сообщение
C
1
2
3
4
void coninit(){
 _setmode(_fileno(stdout), _O_U16TEXT);
 _setmode(_fileno(stdin), _O_U16TEXT);
}
Хм. Кажется, работает
Цитата Сообщение от DrOffset Посмотреть сообщение
Вы его попробовали? Причем в Windows 10 он работает и в MinGW тоже
Он в не-windows начинает ругаться. Я не просто так win-специфичные костыли ifdef'ом обмазал.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
#if defined(WIN32) || defined(_WIN32) //специальные костыли для виндовой консоли
  #pragma warning(disable : 4996)
  #define _CRT_SECURE_NO_WARNINGS 1
  #include <windows.h>
  #include "fcntl.h"
  void coninit(){
    _setmode(_fileno(stdout), _O_U16TEXT);
    _setmode(_fileno(stdin), _O_U16TEXT);
  }
#else
  #define coninit()
#endif
 
int main(){
  coninit();
  setlocale(LC_ALL, "");
  wchar_t str[100];
  wprintf(L"Проверка ввода текста в консоли (h,в,λ). Введите текст: ");
  wscanf(L"%ls", str);
  for(int i=0; str[i]!=0; i++){
    wprintf(L"[%lc] = 0x%04X\n", str[i], (int)str[i]);
  }
  return 0;
}
Цитата Сообщение от easybudda Посмотреть сообщение
rus2.c:6: warning: ignoring '#pragma warning ' [-Wunknown-pragmas]
Тот редкий случай, когда на warning можно наплевать. И даже городить костыль для его подавления не имеет смысла.
1
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
01.08.2023, 09:04
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Он в не-windows начинает ругаться. Я не просто так win-специфичные костыли ifdef'ом обмазал.
Да это понятно. Я не об этом спрашивал.
Понятно, что финальный код нужно будет обмазать, но меня интересовало применил ли easybudda мои исправления к своему тестовому коду из поста 42. Как их применять я показал выше.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,980
01.08.2023, 12:53
Цитата Сообщение от DrOffset Посмотреть сообщение
попробуйте вот такой код
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
C:\Users\andrew\prog\c\strings>cl DrOffset_rus.c
Оптимизирующий компилятор Microsoft (R) C/C++ версии 19.36.32537 для x86
(C) Корпорация Майкрософт (Microsoft Corporation).  Все права защищены.
 
DrOffset_rus.c
Microsoft (R) Incremental Linker Version 14.36.32537.0
Copyright (C) Microsoft Corporation.  All rights reserved.
 
/out:DrOffset_rus.exe
DrOffset_rus.obj
 
C:\Users\andrew\prog\c\strings>DrOffset_rus.exe
Проверка РІРІРѕРґР° текста РІ консоли. Введите текст: йцукен
[й] = 0x0439
[ц] = 0x0446
[у] = 0x0443
[к] = 0x043A
[е] = 0x0435
[н] = 0x043D
 
C:\Users\andrew\prog\c\strings>
Code
1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\andrew\prog\c\strings>clang -Wall DrOffset_rus.c
 
C:\Users\andrew\prog\c\strings>a
Проверка ввода текста в консоли. Введите текст: йцукен
[й] = 0x0439
[ц] = 0x0446
[у] = 0x0443
[к] = 0x043A
[е] = 0x0435
[н] = 0x043D
 
C:\Users\andrew\prog\c\strings>
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
C:\Users\andrew\prog\c\strings>gcc -Wall DrOffset_rus.c
DrOffset_rus.c:6: warning: ignoring #pragma warning  [-Wunknown-pragmas]
 #pragma warning(disable : 4996)
 
 
C:\Users\andrew\prog\c\strings>a
Проверка ввода текста в консоли. Введите текст: йцукен
[й] = 0x0439
[ц] = 0x0446
[у] = 0x0443
[к] = 0x043A
[е] = 0x0435
[н] = 0x043D
 
C:\Users\andrew\prog\c\strings>
Цитата Сообщение от DrOffset Посмотреть сообщение
Да, и по моей рекомендации из поста №45 у вас должен был заработать вот такой код:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
C:\Users\andrew\prog\c\strings>cl DrOffset_rus2.c
Оптимизирующий компилятор Microsoft (R) C/C++ версии 19.36.32537 для x86
(C) Корпорация Майкрософт (Microsoft Corporation).  Все права защищены.
 
DrOffset_rus2.c
Microsoft (R) Incremental Linker Version 14.36.32537.0
Copyright (C) Microsoft Corporation.  All rights reserved.
 
/out:DrOffset_rus2.exe
DrOffset_rus2.obj
 
C:\Users\andrew\prog\c\strings>DrOffset_rus2.exe
Проверка РІРІРѕРґР° текста РІ консоли. Введите текст: йцукен
[й] = 0x 439
[ц] = 0x 446
[у] = 0x 443
[к] = 0x 43A
[е] = 0x 435
[н] = 0x 43D
 
C:\Users\andrew\prog\c\strings>
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
C:\Users\andrew\prog\c\strings>clang -Wall DrOffset_rus2.c
DrOffset_rus2.c:22:5: warning: call to undeclared function '_setmode'; ISO C99 and later do not support implicit
      function declarations [-Wimplicit-function-declaration]
    _setmode(_fileno(stdout), _O_U16TEXT);
    ^
1 warning generated.
 
C:\Users\andrew\prog\c\strings>a
Проверка ввода текста в консоли. Введите текст: йцукен
[й] = 0x 439
[ц] = 0x 446
[у] = 0x 443
[к] = 0x 43A
[е] = 0x 435
[н] = 0x 43D
 
C:\Users\andrew\prog\c\strings>
Code
1
2
3
4
5
6
7
8
9
10
11
12
C:\Users\andrew\prog\c\strings>gcc -Wall DrOffset_rus2.c
 
C:\Users\andrew\prog\c\strings>a
Проверка ввода текста в консоли. Введите текст: йцукен
[й] = 0x 439
[ц] = 0x 446
[у] = 0x 443
[к] = 0x 43A
[е] = 0x 435
[н] = 0x 43D
 
C:\Users\andrew\prog\c\strings>
Цитата Сообщение от DrOffset Посмотреть сообщение
а какая версия ос?
А я же чуть выше картинку вешал...
Code
1
2
3
4
5
C:\Users\andrew\prog\c\strings>ver
 
Microsoft Windows [Version 10.0.19045.3208]
 
C:\Users\andrew\prog\c\strings>

1
 Аватар для COKPOWEHEU
4146 / 2724 / 433
Регистрация: 09.09.2017
Сообщений: 12,067
01.08.2023, 13:02
easybudda, а если вот так? На gcc и clang не надо, с ними-то проблемы вроде решили. Теперь пытаемся заставить майкрософтовский компилятор работать как положено.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
#if defined(WIN32) || defined(_WIN32) //специальные костыли для виндовой консоли
  #pragma warning(disable : 4996)
  #define _CRT_SECURE_NO_WARNINGS 1
  #include <windows.h>
  #include "fcntl.h"
  #include <io.h>
  void coninit(){
    _setmode(_fileno(stdout), _O_U16TEXT);
    _setmode(_fileno(stdin), _O_U16TEXT);
  }
#else
  #define coninit()
#endif
 
int main(){
  coninit();
  setlocale(LC_ALL, "");
  wchar_t str[100] = L"Проверка ввода текста в консоли (h,в,λ). Введите текст: ";
  wprintf(L"%ls", str);
  //wscanf(L"%ls", str);
  for(int i=0; str[i]!=0; i++){
    wprintf(L"[%lc] = 0x%04X\n", str[i], (int)str[i]);
  }
  return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.08.2023, 13:02

Ввод данных с клавиатуры в одномерный массив
Здравствуйте. У нас есть массив из 16 элементов, с клавиатуры вводятся 16 различных цифр подряд (1234567890675923) после того как мы ввели...

Ввод с клавиатуры данных в массив, состоящий из 10 структур типа STUDENT
Помогите пожалуйста. Выдает в строке NAME: MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM а потом имя. Как убрать буквы M? #include...

Ввод с клавиатуры данных в массив, состоящий из восьми элементов типа TRAIN
помогите пожалуйста, не получается сделать,туго с динамикой. • Описать структуру с именем TRAIN, содержащую следующие поля: • название...

Ввод с клавиатуры данных в массив, состоящий из восьми элементов заданного типа
Вариант 16 Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; • дата рождения (массив...

Сформировать одномерный массив целых чисел, используя ввод данных с клавиатуры
Найти в массиве наибольшее число подряд идущих одинаковых элементов (например {1,5,3,6,6,6,6,6,3,4,4,5,5,5} = 5). Заранее большое спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
Знание — сила: Доктрина интенциональности знаний, углубление в формулу
Hrethgir 01.08.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11957&stc=1&d=1785567302 Знаменитый афоризм Фрэнсиса Бэкона «Знание — сила» (Scientia potentia est) в массовой культуре принято понимать. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru