Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
bugmeno7
3 / 3 / 1
Регистрация: 01.04.2015
Сообщений: 42
#1

Не выводятся русские символы

08.06.2015, 12:34. Просмотров 894. Ответов 8
Метки нет (Все метки)

Программа не может вывести русские символы, но если оставить только функцию main то все отображается нормально
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <stdio.h>
#include <string>
#include <conio.h>
#include <cstdlib>
#include <cstring>
#include <windows.h>
#include <locale.h>
using namespace std;
struct TRAIN
{
    char nazn[20];
    int number;
    float time;
};
const int size_p=sizeof(TRAIN);
 
int create_file(FILE *fbin);
int sort_file(FILE *fbin);
int print_file(FILE *fbin);
int search_persons(FILE *fbin);
 
int main()
{
    FILE *fbin;
    char c;
    fbin=fopen("train.dat","r+b");
    if(!fbin) fbin=fopen("train.dat","w+b");
    setlocale(LC_CTYPE, "rus");
    while(1)
    {
        system("cls");
        puts("1-Запись в файл");
        puts("2-Сортировка файла");
        puts("3-Вывод файла");
        puts("4-Поиск и вычисления");
        puts("5-Выход");
        puts("______________________");
        puts("Введите номер пункта\n");
        c=getch();
        switch(c)
        {
            case'1':create_file(fbin);break;
            case'2':sort_file(fbin);break;
            case'3':print_file(fbin);break;
            case'4':sort_file(fbin);break;
            case'5':return 0;
        }
    }
}
int create_file(FILE *fbin)
{
    TRAIN elem;
    fseek(fbin,0,SEEK_END);
    puts("Ввод данных о поездах");
    puts("Для выхода введите символ *");
    puts("____________________________");
    puts("Введите направление");
    scanf("%s",&elem.nazn);
    if (!strcmp(elem.nazn,"*")) return 1;
    puts("Введите номер поезда");
    scanf("%i",&elem.number);
    puts("Введите время отправления");
    scanf("%f",&elem.time);
    fwrite(&elem,size_p,1,fbin);
}
int print_file(FILE *fbin)
{
    TRAIN elem;
    int n;
    system("clr");
    rewind(fbin);
    puts("Пункт назначения      № Поезда      Время отправления");
    do
    {
        n=fread(&elem,size_p,1,fbin);
        if (n<1) break;
        printf("%-15s%-6i%-8.2f\n",elem.nazn,elem.number,elem.time);
    }while(1);
    puts("____________________________________");
    puts("Нажмите любую клавишу");
    getch();
    return 0;
}
int sort_file(FILE *fbin)
{
    long i,j;
    TRAIN elem1,elem2;
    fseek(fbin,0,SEEK_END);
    long len=ftell(fbin)/size_p;
    rewind(fbin);
    for(i=len-1;i>=1;i--)
        for(j=0;j<=i-1;j++)
        {
            fseek(fbin,j*size_p,SEEK_SET);
            fread(&elem1,size_p,1,fbin);
            fread(&elem2,size_p,1,fbin);
            if (elem1.time>elem2.time)
            {
                fseek(fbin,(-2)*size_p,SEEK_CUR);
                fwrite(&elem2,size_p,1,fbin);
                fwrite(&elem1,size_p,1,fbin);
            }
        }
    puts("Сортировка завершена, нажмите любую клавишу");
    getch();
    return 0;
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2015, 12:34
Ответы с готовыми решениями:

Не выводятся русские символы
Доброго времени суток, столкнулся с такой проблемой, сегодня решил поставить vs...

Русские символы в консоли выводятся нормально, латиница - нет
Добрый день. Подскажите пожалуйста, столкнулся с следующей проблемой, когда...

Не выводятся русские буквы
#include &lt;iostream&gt; using namespace std; int mul (int x, int y); //...

Широкие символы wchar_t wstring не хотят принимать русские символы
Собственно вопрос в шапке, вот примеры: std::wstring str = L&quot;блин комом&quot;; и...

Русские названия файлов выводятся некорректно
У меня есть программа которая выводит список файлов каталога. Как сделать так,...

8
ZeroHero
3 / 3 / 1
Регистрация: 24.05.2015
Сообщений: 67
08.06.2015, 13:02 #2
Пробовали выводить coutом? Тоже самое?
0
bugmeno7
3 / 3 / 1
Регистрация: 01.04.2015
Сообщений: 42
08.06.2015, 15:06  [ТС] #3
Цитата Сообщение от ZeroHero Посмотреть сообщение
Пробовали выводить coutом? Тоже самое?
Да, все тоже самое, даже через printf
0
Mamoruhiko
41 / 39 / 47
Регистрация: 13.05.2015
Сообщений: 222
08.06.2015, 15:08 #4
C++
1
setlocale(LC_ALL, ".1251");
Или:
C++
1
setlocale(LC_ALL, ".866");
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
08.06.2015, 15:40 #5
bugmeno7, поажи, как выводится. И перенеси setlocale(LC_CTYPE, "rus"), в main(), выше всех.
0
bugmeno7
3 / 3 / 1
Регистрация: 01.04.2015
Сообщений: 42
08.06.2015, 20:01  [ТС] #6
Mamoruhiko, не помогает

Lss, переносил, не помогало

Не выводятся русские символы
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
08.06.2015, 20:09 #7
Среда какая? ОС? Код сам писал или скопировал откуда-то?
0
Stanis
52 / 41 / 16
Регистрация: 16.12.2012
Сообщений: 144
08.06.2015, 20:42 #8
Посмотри кодировку своей консоли, в программе измени пару строк вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    FILE *fbin;
    char c;
    fbin=fopen("train.dat","r+b");
    if(!fbin) fbin=fopen("train.dat","w+b");
    
        setlocale(LC_CTYPE, "rus");
    system("chcp "); //здесь вот эту строку допиши
    while(1)
    {
 //       system("cls"); эту  закомментируй
        puts("1-Запись в файл");
        puts("2-Сортировка файла");
        puts("3-Вывод файла");
        puts("4-Поиск и вычисления");
        puts("5-Выход");
вверху консоли при запуске программы выведется номер кодировки , должна быть 866 , если другая , то
в свой исходный код добавь system("chcp 866");
0
bugmeno7
3 / 3 / 1
Регистрация: 01.04.2015
Сообщений: 42
10.06.2015, 23:14  [ТС] #9
Все заработало, единственное что я изменил это среду разработки, были проблемы с ноутом, перебил винду, поставил Visual Studio, до этого был Code::Blocks , видно в текстовом документе кодировка была кривая, т.к. при открытии блокнотом русские символы не отображались, в отличии от остальных проэктов
0
10.06.2015, 23:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2015, 23:14

Набор текста (Не выводятся русские буквы, WideCharToMultiByte)
Всем добрый день. Программирую ввод текста в строку, для этого ловлю параметр...

Выводятся непонятные символы В ФАЙЛ
Столкнулся с проблемой. Сначала при выводе в консоль была проблема, но поправил...

Не выводятся символы таблицы ASCII
У меня для кода нужна кириллица, но также нужны и символы из ASCII. Для кода...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru