Неверная кодировка в выдаче переменных - C (СИ)
Формулировка задачи:
Здравствуйте! У меня такая проблема - когда ввожу данные для заполнения таблицы, в самой таблице появляются кракозябры:
Подскажите, пожалуйста, как исправить?
#include <stdio.h>
#include <stdafx.h>
#include <locale>
int main(void) {
setlocale(LC_ALL, "Russian");
char name1[9], name2[9], name3[9];
char vs1, vs2, vs3;
int pl1, pl2, pl3;
float kl1, kl2, kl3;
/* Введение фактических данных*/
printf("1. Введите название, вид собственности, площадь, колличество работников >");
scanf("%s %c %d %f",name1, &vs1, &pl1, &kl1);
printf("2. Введите название, вид собственности, площадь, колличество работников >");
scanf("%s %c %d %f",name2, &vs2, &pl2, &kl2);
printf("3. Введите название, вид собственности, площадь, колличество работников >");
scanf("%s %c %d %f",name3, &vs3, &pl3, &kl3);
/* Вывод таблицы */
/* вывод заголовков */
printf("-------------------------------------------------------------\n");
printf("| Сельскохозяйственные предприятия |\n");
printf("|-----------------------------------------------------------|\n");
printf("| Название | Вид собственности | Площадь земли | Колличество|\n");
printf("| | | (га) | работников |\n");
printf("|----------|-------------------|---------------|------------|\n");
/* вывод строк фактических данных */
printf("|%9s | %1c | %4d | %-5.0f |\n", name1, vs1, pl1, kl1);
printf("|%9s | %1c | %4d | %-5.0f |\n", name2, vs2, pl2, kl2);
printf("|%9s | %1c | %4d | %-5.0f |\n", name3, vs3, pl3, kl3);
/* вывод примечаний */
printf("|-----------------------------------------------------------|\n");
printf("| Вид собственности: Д - государственная, Ч - частная, |\n");
printf("| К - кооперативная |\n");
printf("-------------------------------------------------------------\n");
return 0;
}Решение задачи: «Неверная кодировка в выдаче переменных»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
system("chcp 1251");
char name1[9], name2[9], name3[9];
char vs1, vs2, vs3;
int pl1, pl2, pl3;
float kl1, kl2, kl3;
/* Введение фактических данных*/
printf("1. Введите название, вид собственности, площадь, колличество работников >");
scanf("%s %c %d %f",name1, &vs1, &pl1, &kl1);
printf("2. Введите название, вид собственности, площадь, колличество работников >");
scanf("%s %c %d %f",name2, &vs2, &pl2, &kl2);
printf("3. Введите название, вид собственности, площадь, колличество работников >");
scanf("%s %c %d %f",name3, &vs3, &pl3, &kl3);
/* Вывод таблицы */
/* вывод заголовков */
printf("-------------------------------------------------------------\n");
printf("| Сельскохозяйственные предприятия |\n");
printf("|-----------------------------------------------------------|\n");
printf("| Название | Вид собственности | Площадь земли | Колличество|\n");
printf("| | | (га) | работников |\n");
printf("|----------|-------------------|---------------|------------|\n");
/* вывод строк фактических данных */
printf("|%s | %1c | %4d | %-5.0f |\n", name1, vs1, pl1, kl1);
printf("|%s | %1c | %4d | %-5.0f |\n", name2, vs2, pl2, kl2);
printf("|%s | %1c | %4d | %-5.0f |\n", name3, vs3, pl3, kl3);
/* вывод примечаний */
printf("|-----------------------------------------------------------|\n");
printf("| Вид собственности: Д - государственная, Ч - частная, |\n");
printf("| К - кооперативная |\n");
printf("-------------------------------------------------------------\n");
system("pause");
return 0;
}
Объяснение кода листинга программы
- В коде представлен программа на языке C, которая запрашивает у пользователя ввод данных о трех сельскохозяйственных предприятиях и выводит эти данные в виде таблицы.
- Переменные name1, name2, name3 содержат названия предприятий (максимальное количество символов в названии — 9).
- Переменные vs1, vs2, vs3 содержат виды собственности предприятий (максимальное количество символов в виде собственности — 1).
- Переменные pl1, pl2, pl3 содержат площади земли предприятий (максимальное количество цифр в площади — 4).
- Переменные kl1, kl2, kl3 содержат количество работников предприятий (максимальное количество цифр в количестве работников — 5).
- Ввод данных осуществляется с помощью функции scanf.
- Вывод данных осуществляется с помощью функции printf.
- Код содержит блоки вывода заголовков таблицы, ввода данных и вывода примечаний.
- Значения переменных name1, vs1, pl1, kl1 присваиваются после ввода пользователем данных о первом предприятии.
- Значения переменных name2, vs2, pl2, kl2 присваиваются после ввода пользователем данных о втором предприятии.
- Значения переменных name3, vs3, pl3, kl3 присваиваются после ввода пользователем данных о третьем предприятии.
- Значения переменных vs1, vs2, vs3 используются для формирования столбца
Вид собственноститаблицы. - Значения переменных pl1, pl2, pl3 используются для формирования столбца
Площадь землитаблицы. - Значения переменных kl1, kl2, kl3 используются для формирования столбца
Колличество работниковтаблицы. - Значения переменных name1, name2, name3 используются для формирования строк таблицы.
- Значения переменных vs1, vs2, vs3 используются для формирования строк таблицы.
- Значения переменных pl1, pl2, pl3 используются для формирования строк таблицы.
- Значения переменных kl1, kl2, kl3 используются для формирования строк таблицы.
- Значения переменных name1, name2, name3 не используются для формирования примечаний.
- Значения переменных vs1, vs2, vs3 не используются для формирования примечаний.
- Значения переменных pl1, pl2, pl3 не используются для формирования примечаний.
- Значения переменных kl1, kl2, kl3 не используются для формирования примечаний.