Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
in_silent
1

Visual Studio 2010: ввод русских символов в файл, циклы

27.12.2012, 16:48. Показов 5706. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код должен считывать символы, вводимые с клавиатуры (русские) и записывать их в файл с последующим выводом на консоль, что он и делает, только записывает и выводит он каракули какие-то , при этом, если написать прямо в файле (тхт) на русском, то отлично все отображает.
Когда происходит ввод данных, творится что-то невообразимое.
Помогите, пожалуйста, может кто знает в чем проблема?

C++ (Qt)
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <iostream>//организация ввода-вывода
#include <stdio.h>//содержит определения макросов, константы и объявления функций и типов, используемых для различных операций стандартного ввода и вывода
#include <clocale>//позволяет использовать русский язык
#include <stdlib.h>//stdlib.h -проверить!!содержит в себе функции, занимающиеся выделением памяти, контроль процесса выполнения программы, преобразования типов и другие
#include <fstream>// включает в себя набор классов, методов и функций, которые предоставляют интерфейс для чтения/записи данных из/в файл
#include <windows.h>
 
using namespace std;//объявление пространства имен std как глобальная переменная
 
char* vvod_stroki ()//символьная переменная vvod_stroki
    {
    setlocale (LC_ALL, "[COLOR="DarkOrchid"].1251[/COLOR]");//определение используемого языка, кодировки
    int i=0,n=0;//объявление числовых переменных с нулевым значением
    int c;//объявление числовой переменной
    char *str;//объявление символьной переменной
    if( (str=(char*)malloc(1))==NULL) //выделяем память для одного символа
    printf("Память не выделилась");//выводим сообщение на экран если память не выделилась
    for(;;)
        {
        c=getchar();//считывание символа с клавиатуры
        if(c=='\n') //до нажатия enter
            {
            *(str+i)=0;//добавляем ноль символ и выходим из цикла
            break;//останавливаем цикл
            }
        *(str+i++)=(char)c;// заносим символ в символьный массив
        n=1+i;//присваиваем значение переменной
        str=(char*)realloc(str,n);//расширяем память для следующего символа
        }
    return str;//возврат к объявлению символьной переменной
    }
 
int main ()//
    {
    metka:
        setlocale (LC_ALL, "[COLOR="DarkOrchid"].1251[/COLOR]");
    int n=0;
    
        system ("cls");
        printf ("Выберите действие\n01. Создать новую базу\n02. Редактировать введенные данные\n03. Просмотреть введенные данные\n");
        
        cin>>n;
        
        if (n<01||n>03)
            {
            fflush (stdin);
            printf ("Неправильный ввод. Пожалуйста выберите варинат меню\n");
            system ("pause");
            goto metka;
            }
        else
            {
            switch (n)
                {
                case 1: 
                    {
                    FILE *fo;
                    char *add;
                    if((fo=fopen("E:\\project\\project\\project\\Text.txt", "w")) == NULL)
                        {
                        printf("He удается открыть файл.\n");
                        exit(1);   
                        }
                    else    
                        {
                        cout<<"Введите новые данные в формате:\n Водитель: Точка отправления-Точка назначения\n";
                        for (int i=1; i<=10; i++)
                            {
                            fflush(stdin);
                            add=vvod_stroki ();
                            [COLOR="DarkOrchid"]OemToCharA(add,fo)[/COLOR];
                            
                            cout<<i<<") "<<add;
                            
                            fprintf(fo, "%s", add);
 
                            fflush(stdin);
                            //fputs(add,fo);
                            fputs("\n",fo);
                            }
                        fclose (fo);
                        system ("pause");
                        goto metka;
                        }
                    //  break;
                    //return 0;
                    }
                case 3:  
                    {
                    FILE *fo;
                    char line [200];
                    if((fo=fopen("E:\\project\\project\\project\\Text.txt", "r")) == NULL)
                        {
                        printf("He удается открыть файл.\n");
                        exit(1);   
                        }
                    else    
                        {
                        cout<<"Ранее введенные данные\n";
                        char arr [10][200];
                        int i=0;
                        for (int i=1;i<=10;i++)
                            {
                            if(fgets (line,200, fo)==NULL)
                                {
                                printf ("Ошибка. Проверьте файл Text.txt\n");
                                }
                            else
                                {
                                
                                arr [i][200]=line [200];
                                
                                cout <<i<<") "<<line;
                                }
                            }
                        fclose (fo);
                        }
                    system ("pause");
                    goto metka;
                    
                    }
        
                
                }//завершение цикла switch
        }//завершение цикла, начавшегося после ввода числа, входящего в диапазон меню
}//завершение цикла main
Добавлено через 4 минуты
Visual Studio C++ 2010 Windows

Добавлено через 41 секунду
Совсем новичок в С++, поэтому, просьба, не сильно ругать за корявость
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.12.2012, 16:48
Ответы с готовыми решениями:

Visual studio 2010 - Проверка на ввод определённых символов
Здравствуйте. Мне нужен код для проверки textbox'а на ввод символов т.е. если вводятся английские...

В Visual studio C++ 2010 не запускается исплняемый файл
При компиляции 1&gt;Построение успешно завершено. Но 1&gt;C:\Program Files...

Чем отличается Microsoft Visual C++ 2010 Express от Visual Studio 2010 Ultimate
Подскажите пожалуйста, в чем разница Microsoft Visual C++ 2010 Express от Visual Studio 2010...

Будет ли всегда программа написанная на Visual Studio 2010 открываться в Visual Studio 2003 ?
Будет ли всегда программа написанная на Visual Studio 2010 открываться в Visual Studio 2003 ?

1
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
27.12.2012, 21:21 2
Тут всё написано Русские шрифты в консоли
1
27.12.2012, 21:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2012, 21:21
Помогаю со студенческими работами здесь

Visual Studio 2010 Error - Не удается найти указанный файл
Облазил весь интернет в поисках ответа , но так и не нашел. При отладке возникает следующая...

Как откомпилировать один файл в MS Visual studio 2010 express
Здравствуйте!!! У меня на компе стоит 2 компилятора: wxDEV C++ и ms visual studio 2010 exspress....

Как компилировать .cpp файл в Microsoft Visual Studio 2010 ?
Как компилировать .cpp файл в Microsoft Visual Studio 2010 ?

Vba Microsoft visual studio 2010 Функции для записи в файл
Работа с файлами Vba Microsoft visual studio 2010. Подскажите функции для записи в файл


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru