У меня есть простая программа, которая принимает пользовательский ввод в виде строки и выводит введенную строку. Единственное отличие состоит в том, что я предоставил пользователю два варианта:
Первый для ввода базовой строки .
Второй для ввода строки шириной .
scanf () успешно принимает пользовательский ввод для базовой строки, но wscanf () не запрашиваетдля ввода пользователя и просто выйти.
Почему это происходит с wscanf (), а не с scanf ()? Как бы взять пользовательскую строку ввода из wscanf () в той же программе.
#include <stddef.h>
#include <stdio.h>
#include <wchar.h>
void basic()
{
char str[100];
printf("Enter string with basic string char: ");
scanf("%s", str);
printf("Entered string : %s \n", str);
}
void wide()
{
wchar_t str[100];
wprintf(L"Enter string with wide string char: ");
wscanf(L"%ls", str);
wprintf(L"Entered string : %ls \n", str);
}
int main(int argc, char **argv)
{
int option = 1;
printf("\n Basic string (char*) vs Wide string (wchar_t*) \n\n");
printf("1. Basic string \n2. Wide string \n");
printf("Enter choice : ");
scanf("%d", &option);
switch(option)
{
case 1:
basic();
break;
case 2 :
wide();
break;
default:
printf("Invalid choice \n");
}
return 0;
}
Выход:
1. Базовая строка:
Basic string (char*) vs Wide string (wchar_t*)
1. Basic string
2. Wide string
Enter choice : 1
Enter string with basic string char: hello
Entered string : hello
2. Широкая строка:
Basic string (char*) vs Wide string (wchar_t*)
1. Basic string
2. Wide string
Enter choice : 2