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

Некорректное отображение с функцией gets - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
hatter
1 / 1 / 0
Регистрация: 01.09.2010
Сообщений: 134
01.05.2011, 00:30     Некорректное отображение с функцией gets #1
Когда использую функцию gets она
во-первых, не воспринимает русский текст, хотя я в мейне добавляю setlocale(0,"")
во-вторых, даже если латинскими пишу слова больше трех символов она при выводе на экран добавляет к ним хаотичные буквы или вообще символы.
С чем может быть связано? Как исправить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2011, 00:30     Некорректное отображение с функцией gets
Посмотрите здесь:

C++ Некорректное условие
C++ Некорректное отображение окна
некорректное считывание из файла C++
C++ Вывод выражения типа "float". Некорректное отображение
C++ Некорректное отображение элементов массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Overmind024
99 / 99 / 6
Регистрация: 10.09.2010
Сообщений: 267
01.05.2011, 01:21     Некорректное отображение с функцией gets #2
во-первых, setlocale(0,"") надо писать при вводе русских символов, а при выводе как раз наоборот убирать.
во-вторых, это не связанно с функцией gets. Код в студию.
hatter
1 / 1 / 0
Регистрация: 01.09.2010
Сообщений: 134
01.05.2011, 02:18  [ТС]     Некорректное отображение с функцией gets #3
Программка разбивает предложение на составляющие его слова
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
#include "stdafx.h"
#include <iostream>
#include <cstdio>
 
using namespace std;
 
int main()
    {   setlocale (0,"");
        char str[80];
        char token[80];
 
        int i,j;
        
        cout<<"Предложение: ";
        gets (str);
 
        for (i=0;;i++)
        {
            for(j=0;str[i]!=' ' && str[i]; i++, j++)
                token[j]=str[i];
            token[j]!='\0';
            cout << token <<"\n";
            if(!str[i]) break;
        }
     getchar();
     getchar();
 
     return 0;
    }
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
01.05.2011, 02:59     Некорректное отображение с функцией gets #4
gets работает нормально, по ходу ты в циклах малость перемудрил.
hatter
1 / 1 / 0
Регистрация: 01.09.2010
Сообщений: 134
02.05.2011, 16:13  [ТС]     Некорректное отображение с функцией gets #5
В каком смысле?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
02.05.2011, 16:29     Некорректное отображение с функцией gets #6
В том самом. Ошибка в разбиении предложения.
Цитата Сообщение от hatter Посмотреть сообщение
token[j]!='\0';
=>
token[j] = '\0';
hatter
1 / 1 / 0
Регистрация: 01.09.2010
Сообщений: 134
03.05.2011, 01:32  [ТС]     Некорректное отображение с функцией gets #7
благодарю, не сообразил сам! Но все-таки русский текст выводится кракозябрами. Можно ли это исправить?
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
03.05.2011, 05:47     Некорректное отображение с функцией gets #8
setlocale убери.
hatter
1 / 1 / 0
Регистрация: 01.09.2010
Сообщений: 134
03.05.2011, 12:09  [ТС]     Некорректное отображение с функцией gets #9
Уже пробовал! gets отображает все нормально. Но в этом случае cout выводит на экран не пойми что!
Просто хочу понять, как сделать, чтобы и cout и gets с русским шрифтом работали нормально.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
03.05.2011, 12:50     Некорректное отображение с функцией gets #10
Цитата Сообщение от hatter Посмотреть сообщение
Но в этом случае cout выводит на экран не пойми что!
я так понимаю речь идет о константных строках на русском языке? Типа
C++
1
cout<<"Предложение: ";
?
Тогда тут Русские шрифты в консоли можно посмотреть много разных способов, мне больше нравится в посте номер 3.
hatter
1 / 1 / 0
Регистрация: 01.09.2010
Сообщений: 134
04.05.2011, 03:11  [ТС]     Некорректное отображение с функцией gets #11
Странно, но вариант с
SetConsoleCP(1251);
SetConsoleOutputCP(1251); у меня не работает. так же cout кракозябры выводит.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
04.05.2011, 03:21     Некорректное отображение с функцией gets #12
Комментарии в начале читал? Про смену шрифтов?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2011, 04:13     Некорректное отображение с функцией gets
Еще ссылки по теме:

Некорректное обрезание строки C++
WxString(4 байта) некорректное отображение значения шестнадцатеричных значений C++
Некорректное выполнение программы C++

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

Или воспользуйтесь поиском по форуму:
hatter
1 / 1 / 0
Регистрация: 01.09.2010
Сообщений: 134
04.05.2011, 04:13  [ТС]     Некорректное отображение с функцией gets #13
Все получилось, благодарю! Я сначала не сообразил про окно, стал искать в настройках компилятора, подумал, что где то там свойства))) Потом только дошло!
Yandex
Объявления
04.05.2011, 04:13     Некорректное отображение с функцией gets
Ответ Создать тему
Опции темы

Текущее время: 11:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru