Здравствуйте, я хочу сделать так, чтобы я мог присвоить строчное значение переменной ''month'', через scanf_s. К примеру простая задача: cоставить программу, которая бы по введенному времени года выдавала бы название месяцев, относящихся к нему.
То есть по моей логике надо просто ввести пользователю в scanf_s четыре варианта: Зима, Весна, Лето, Осень и потом просто через условный оператор закончить программу, но я не понимаю как именно ввести, потому что у меня ошибка. Помогите пожалуйста.
#include "stdio.h"
#include "locale.h"
int main() {
setlocale(LC_ALL, "Rus");
char month[10];
printf("Введите строку\n");
scanf_s("%s", month);
printf("Вы ввели %s", month);
}

https://onlinegdb.com/yCi42E-Pj
#include
#include
#include
int main()
{
setlocale(LC_ALL, "Rus");
char str[20];
printf("Введите время года: ");
scanf("%s", str);
if (!strcmp(str, "Зима"))
printf("Декабрь Январь Февраль\n");
else if (!strcmp(str, "Весна"))
printf("Март Апрель Май\n");
else if (!strcmp(str, "Лето"))
printf("Июнь Июль Август\n");
else if (!strcmp(str, "Осень"))
printf("Сентябрь Октябрь Ноябрь\n");
else
printf("Такого времени года не существует\n");
return 0;
}
#include
#include
#include
#define LENGTH 5U
#define BUFFER (LENGTH + 1U)
int main(void) {
char season[BUFFER] = {0};
system("chcp 1251 > nul");
printf("Время года: ");
scanf_s("%s", season, BUFFER);
printf("%s", "Месяцы: ");
if (!strncmp(season, "зима", LENGTH)) puts("декабрь, январь, февраль");
else if (!strncmp(season, "весна", LENGTH)) puts("март, апрель, май");
else if (!strncmp(season, "лето", LENGTH)) puts("июнь, июль, август");
else if (!strncmp(season, "осень", LENGTH)) puts("сентябрь, октябрь, ноябрь");
else puts("ошибка!");
system("pause > nul");
return 0;
}
char c[4];
scanf_s("%4c", c, (unsigned)_countof(c));
В языке Си нет функции scanf_s. Это выдумка компании Майкрософт.
В Си есть функция scanf, которая принимает значение текстовой переменной до пробела.
Чтобы ввести строку с пробелами, нужно использовать функцию fgets.
Например:
char str[15]={0};
fgets(str, sizeof(str), stdin);
А функция setlocale используется только вместе с библиотеками locale.h и wchar.h. То есть нужно обязательно добавить эти библиотеки директивами #include<locale.h> и #include<wchar.h>, и обязательно сохранять текст в переменной типа wchar_t * или в массиве типа wchar_t. Иначе применение функции setlocale бессмысленно, она не работает.
Тогда и текст нужно считывать аналогичной функцией wscanf или fgetws.
Например:
#include<locale.h>
#include<wchar.h>
#include<stdio.h>
int main()
{
setlocale(LC_ALL, "Russian");
wchar_t month[10]={0};
wprintf(L"Введите строку:\n);
fgetws(month, sizeof(month), stdin);
/*или wscanf(L"%ls", &month); если нет пробелов в вводимой строке */
wprintf(L"\nВы ввели %ls", month);
return 0;
}