Форум программистов, компьютерный форум CyberForum.ru

Почему когда в рабочую программу вставляю setlocale(LC_ALL, "Rus"); она перестает корректно работать - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ консольные приложения http://www.cyberforum.ru/cpp-beginners/thread439947.html
вообщем задание не сложное но я его немогу просто понять=( мне не надо писать код или решение помогите просто его понять: Найти непрерывный участок из 10 элементов, сумма которых максимальная
C++ Чтение файла Вообщем проблема заключается в том, что при чтении файла и вывод его в консоль, само чтение файла до конца не доходит. В дебаггере проверял переменная int lenghtFile содержит в себе количество элементов в файле, а точнее 61. Но при выводе на экран заканчивается на 25 элементе. Прошу помощи в этой проблеме. Сам код: struct objectsMain { http://www.cyberforum.ru/cpp-beginners/thread439924.html
Куда деваются данные из массива во время выполнения программы? C++
Во время выполнения проги куда-то деваются данные из массива из стуктур. Почему так происходит? 1. Ввожу данные о 3 студентах в массив структур. 2. Вывожу эти данные в виде таблички. 3. Выполняется поиск студентов со средним баллом выше 4.0 и данные о них должны выводиться на экран. 4. Программа выдаёт какую-то хрень вместо вывода нужных фамилий. 5. Для наглядности в конце программы поставил...
Массивы C++
Ребят, помогите пожалуйста с лабораторной, осталось два пункта, никак не могу написать 4. После максимального по модулю элемента каждой строки вставить соответствующий элемент из заданного одномерного массиве. 5. Имеется строка, содержащая буквы и цифры. Преобразуйте эту строку так, чтобы сначала в ней шли все цифры, но в обратном порядке, а потом все буквы исходной строки (т.е....
C++ Вывести строки файла, после строки добавляя, сколько раз в ней встретилось слово http://www.cyberforum.ru/cpp-beginners/thread439912.html
Напишите программу, которая считывает текст из файла и выводит на экран все строки файла, после каждой строки добавляя, сколько раз в ней встретилось слово, введенное с клавиатуры. Необходимо предусмотреть случай, если файла не существует.Работа в Turbo C обязательна.
C++ Типизированные файлы Доброго времени суток, форумчане. Нужна помощь при работе с типизированными файлами. Работаю в Visual Studio 2008 Professional. Проблема постала такая: в файл записуеться нужное нам количество структур. При чтении все структуры читаються, но последняя запись читаеться два раза. Тоесть если в файл образно записать: 1 2 3 то на экране будет: 1 2 3 3 Вот код: подробнее

Показать сообщение отдельно
fors-dnet
 Аватар для fors-dnet
3 / 3 / 0
Регистрация: 11.12.2011
Сообщений: 88
03.02.2012, 00:19     Почему когда в рабочую программу вставляю setlocale(LC_ALL, "Rus"); она перестает корректно работать
Программа сначала считывает данные с файла, потом сортирует их и сохраняет. Мне нужно было сделать меню на русском, но после добавления строчки сетлокал программа перестает корректно считывать дынные из файла. Вот код программы, помогите, в чём ошибка, если сетлокал убрать и оставить на англ всё норм работает. Всё это находится в функции гет:
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include<iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
 
class Abonent
{
private:   
        char nomer[11];
        double ostatok;
        char tarif[15];
public:
        int load (Abonent *arr);
        int sortost (Abonent *t);
        int sorttar ( Abonent *arr);
        int save ( Abonent *arr);
        void get(void);
 
 
}arr [5];
 int Abonent:: load (Abonent *arr)
 {
        int i=0;
        FILE *f=NULL; 
        f=fopen("D:\Input.txt", "rt");
        if (f==NULL)
        {
                std::cout<< "No file!!!\n";
                exit (0);
        }
        
        for(i=0;i<5;i++)
        {
                fscanf(f,"%s", &arr[i].nomer);
                fscanf(f,"%lf", &arr[i].ostatok);
                fscanf(f,"%s", &arr[i].tarif);
        }
        fclose (f);
 
        return 0;
 }
 
 
 
 int Abonent:: sortost (class Abonent *t)
 {
        class Abonent x;
        int i=0, j=0;   
        for(i=0;i<5;i++)
        {
                for(j=0; j<4; j++)
                {
                        if( t[j].ostatok > t[j+1].ostatok )
                        {
                                x=t[j];
                                t[j]=t[j+1];
                                t[j+1]=x;
                        }
                        
                }
        }
 
        return 0;       
 }
 int Abonent:: sorttar (class Abonent *arr)
 {
        int i=0, j=0;
        struct Abonent temp;
        for (i=0; i<5; i++)
        {
                for (j=0; j<4; j++)
                {
                        if (strcmp(arr[j].tarif, arr [j+1].tarif) >= 0)
                        {
                                temp=arr[j];
                                arr[j]=arr[j+1];
                                arr[j+1]=temp;
                        }
                }
        }
 
        return 0;
 
        return 0;
 }
 
int Abonent:: save (class Abonent *arr)
{
        int i=0;
        FILE *f=NULL;
        f=fopen ("D:\Result.txt", "wt");
        if (f==NULL)
        {
                std::cout<<"No file!!!\n";
                exit (0);
        }
   
        fprintf (f, "Spisok abonentov:\n\n");
        for(i=0;i<5;i++)
        {
                
                fprintf(f,"%s\t", arr[i].nomer);
                fprintf(f,"%lf\t", arr[i].ostatok);
                fprintf(f,"%s\t", arr[i].tarif);
                fprintf(f,"\n");
        }
        fclose (f);
 
        return 0;
}
 void Abonent:: get(void)
 {
        setlocale(LC_ALL, "Rus");
        int n=0, i=0;
          while(1)
          {
           std::cout<<"1.load\n2.sortorovka po osratky\n3.sortirovka po tarify\n4.save\n5.exit\n\n";
           std::cout<<"Input number : ";
           std::cin>>n;
           std::cout<<std::endl;
 
        switch (n)
        {
        case 1 : load(arr);
                         break;
 
        case 2 : sortost (arr);
                     break;
 
        case 3 : sorttar (arr);
                     break;
 
        case 4 : save (arr);
                     break;
 
        case 5 : exit (0);
                     break;
        }
        for (i=0;i<5;i++)
                std::cout<<arr[i].nomer<<'\t'<<arr[i].ostatok<<'\t'<<arr[i].tarif<<std::endl;
        std::cout<<std::endl;
        } 
 }
void main (void)
{
       class Abonent Abonent_val;
       Abonent_val.get();
       system("pause");
 
}
Добавлено через 45 минут
как только добавляю сетлокал в функцию, перестает корректно работать load.

Загружает данные из обычного txt файла такого содержания:

09342598623 56.30 life
05085458748 23.10 mtc
09765874598 11.20 kyivstar
09345874122 89.65 life
09645874114 11.50 mtc

Добавлено через 2 минуты
компилятор visual studio 10.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru