Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 22.12.2009
Сообщений: 45
1

Вывод в документ: китайские иероглифа вместо русских или английских букв

24.01.2010, 10:09. Просмотров 1528. Ответов 1
Метки нет (Все метки)

В коде какато фигня. Он написан и по идее работает, но вот с языком вывода проблема. Когда записываешь что-то в документ он записывает какими то китайскими иероглифами. Хотелось бы это дело исправить, помогите пожалуйста.

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
#define _CRT_SECURE_NO_DEPRECATE
 
#include <stdio.h>
#include <conio.h>
#include <locale.h>
#include <string.h>
 
 
struct knigi{
    char book[50];      // название книги
    char name[20];      // фамилия
    int year;           // год издания
};
 
FILE *f;
 
void menu(void) {
    printf(
        "\n"
        "1. Добавить.\n"
        "2. Просмотреть.\n"
        "3. Найти.\n"
        "9. Выйти.\n\n"
    );
}
 
int main() {
 
     setlocale(LC_ALL,"Russian");
 
    // открытие файла на запись
    FILE *f;
    f = fopen( "database.txt", "ab+" );
    if( f == NULL ) {
        printf( "Не удалось создать или перезаписать 'database.txt'. Нажмите клавишу...\n" );
        _getch();
        return -1;
    }
    menu();
 
    char c;
while(true) {
        printf( "\rВыберите режим работы: " );
        c = _getche();
        knigi t;
        switch (c) {
            case '1': // Добавление ----------------------------------
                printf( "\n\nПополнение базы 'database.txt'.\n"
                        "Для выхода в главное меню введите 0 вместо названия книги или фамилии автора.\n\n" );
                fseek( f, 0, SEEK_END );
 
    // работа с файлом
        while( true )  {
        printf( "Название книги: " );
        scanf_s( "%49s%*[^\n]5000s", t.book, 50 );
        if( t.book[0]=='0' ) break;
        printf( "Фамилия автора: " );
        scanf_s( "%19s%*[^\n]5000s", t.name, 20 );
        if( t.name[0]=='0' ) break;
        printf( "Год издания: " );
        scanf_s("%d", &t.year);
        fwrite( &t, sizeof(t), 1, f );
    printf( "Информация добавлена.\n\n" );
                }
        
        menu();
                break;
            case '2': // Просмотр ------------------------------------
                printf(
                    "\n\nСодержимое базы 'database.txt'\n\n" 
                    "\tНазвание книги:      \tФамилия автора:      \tГод издания:\n" );
                fseek( f, 0, SEEK_SET );
                setlocale( LC_ALL, ".866" );
                while( true ) {
    if( fread( &t, sizeof(knigi), 1, f ) !=1 ) break;
        printf( "\t%-15s\t%s\t%d\n", t.book, t.name, t.year );
                }
 
 
            setlocale( LC_ALL, ".1251" );
                menu();
                break;
            case '3': // Поиск ---------------------------------------
                printf( "\n\nПоиск по базе 'database.txt'\n\n" );
char s[16];
                printf( "Введите название: " );
                scanf_s( "%49s%*[^\n]5000s", s, 50 );
 
printf( "\n\n\tНазвание книги:      \tФамилия автора:      \tГод издания:\n" );
                fseek( f, 0, SEEK_SET );
        setlocale( LC_ALL, ".866" );
                while( true ) {
    if( fread( &t, sizeof(knigi), 1, f ) !=1 ) break;
if( strstr( t.book, s ) != NULL )
    printf( "\t%-15s\t%s\t%d\n", t.book, t.name, t.year );
                }
setlocale( LC_ALL, ".1251" );
                menu();
                break;
            case '9': // Выход ---------------------------------------
                fclose(f);
                return 0;
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2010, 10:09
Ответы с готовыми решениями:

Вывод кракозябр вместо английских букв
Доброго времени суток. Пыталась разобраться самостоятельно, но, к сожалению, недостаточно опыта....

Вывод непонятных символов вместо русских букв
Здравствуйте, возникла такая проблема, что при выводе строки в методе Show() тот текст, который...

Разделение русских и английских букв
Написать функцию разделения русских и английских букв в отдельные строки. #include &lt;iostream&gt;...

Чтение русских и английских букв из файла
Здравствуйте! Делаю игру, где скрипт написан в файле (допустим script.txt), где одновременно есть...

1
158 / 157 / 47
Регистрация: 29.04.2009
Сообщений: 637
24.01.2010, 17:00 2
Где то неправильно инициализирует блок данных для записи.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.01.2010, 17:00

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

Ввод русских, английских букв в textBox
Здравствуйте, как сделать , что бы в текстбокс можно было вводить помимо русских символов еще и...

Отделение русских и английских букв в меню
Доброго дня всем форумчанам! Задача у меня следующая - Есть выпадающее меню сайта на joomla 2.5,...

Замена одинаковых английских и русских букв при поиске
Всем, привет! есть форма поиска: &lt;?PHP function translit($str) { $tr = array( ...

При добавлении и/или извлечении данных из MySQL в DataGridViewer вместо русских букв вопросительные знаки
При добавлении и/или извлечении данных из MySQL в DataGridViewer вместо русских букв вопросительные...


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

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

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