не работает сохранение в файл в программе на си..да и с выводом на русском языке проблемы

программирование программы си

#include "stdafx.h"
#include <locale.h>
#include <stdlib.h>
#include <time.h>

typedef struct shkololo {
char name[50], instr[50], konk[50];
int year;
} shkololos;

const int n = 1000;
int count = 0;

void add(shkololo *&shkololo)
{
setlocale(LC_ALL, "Rus");
char c;
printf("Введите имя ученика: ");
scanf("%c", &c);
gets(shkololo[count].name);
printf("Введите инструмент, используемый учеником: ");
scanf("%s", &shkololo[count].instr);
printf("Введите количество лет занятий: ");
scanf("%d", &shkololo[count].year);
printf("Введите конкурсы, в которых участвовал ученик: ");
scanf("%s", &shkololo[count].konk);
count++;
}

void print(shkololo *&shkololo) {
for (int i = 0; i < count; i++)
{
setlocale(LC_ALL, "Rus");
printf("Ученик №%d\n", i + 1);
printf("Имя ученика: %s\n", shkololo[i].name);
printf("Инструмент ученика: %s\n", shkololo[i].instr);
printf("Продолжительность занятий: %d\n", shkololo[i].year);
printf("Конкурсы: %s\n", shkololo[i].konk);
printf("----------------------------------\n");
}
}

void save(shkololo *shkololo) {
setlocale(LC_ALL, "Rus");
FILE *f = fopen("G:\\shkolol.txt", "wt");
if (f != NULL) {
fwrite(&count, sizeof(count), 1, f);
fwrite(&shkololo, sizeof(shkololos), count, f);
fclose(f);
printf("Сачесфул комплите.\n");
}
else printf("Не сачесфул комплите...\n");
}

shkololo* load() {
setlocale(LC_ALL, "Rus");
FILE *f = fopen("G:\\shkololo.txt", "rt");
if (f != NULL) {

fread(&count, sizeof(count), 1, f);
shkololo *shkololo = new shkololos[count];
fread(shkololo, sizeof(shkololo), count, f);
fclose(f);
printf("Сачесфул коплите.\n");
return shkololo;
}
else {
printf("Не сачесфул комплите...\n");
return NULL;
}
}

int _tmain(int argc, TCHAR* argv[]) {
shkololo *shkololo = new shkololos[n];
int k;
setlocale(LC_ALL, "Rus");

do {
printf("1 - Добавить\n2 - Вывести\n3 - Сохранить\n4 - Загрузить\n5 - Выход\nВаш выбор: ");
scanf("%d", &k);
switch (k) {
case 1:
add(shkololo);
break;
case 2:
print(shkololo);
break;
case 3:
break;
save(shkololo);
case 4:
delete shkololo;
shkololo = load();
}
system("pause");
} while (k != 5);
delete shkololo;
return 0;
}
Ответы:
Зачем так часто использовать setlocale? достаточно одного раза в main.
Я делаю так:
//system("@ECHO OFF"); //По вкусу
setlocale(LC_ALL, "Russian");
std::cout << text << std::endl;
для русификации консоли еще рекомендуют в свойствах окна выставить шрифт типа Lucida Console


10 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.