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

Считывание чаров из cin происходит не корректно - C++

11.11.2014, 22:48. Просмотров 244. Ответов 3
Метки нет (Все метки)

Доброго времени суток! В процедуре void Enter(char* massive) считываю чары в массив. Если в строке больше 20 символов то процедура void EnterS(char x) срабатывает без участия пользователя(берет символ из предыдущей строки). Хочу что бы в независимости от длины, процедура void EnterS(char x) срабатывала для ввода символа отдельно.
Спасибо.

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
// ConsoleApplication2.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <cstdio>
#include <string>
#include <iostream>
using namespace std;
 
void Enter(char* massive)
{
    
    cout << "Введите строку" <<endl;
    cin.getline(massive, 20);
    
    //cout << massive;
    
}
void EnterS(char x)
{
    
    cout << "Введите символ" << endl;
    x= cin.get();
    //cout <<x;
    
}
 
void ToHex(char symbol, char* mas)
{
 
    char convert[] = "0123456789abcdef";
    char X = symbol;
    char H[] = { convert[(unsigned char)X / 16], convert[(unsigned char)X % 16], 0 };
    mas[0] = H[0];
    mas[1] = H[1];
    mas[2] = H[2];
 
}
 
void Change(char* massive, char* mas)
{
    //char symbolX[] = ToHex(symbol);
    for (size_t i = 0; i < 20; i++)
    {
        if ((massive[i]=='#') &(i!=19))
        {
            if (massive[i+1]=='#')
            {
                massive[i] = mas[0];
                massive[i+1] = mas[1];
            }
        }
    }
}
 
 
 
void _tmain()
{
    setlocale(LC_ALL, "Russian");
    char massive[20];
    for (size_t i = 0; i < 20; i++)
    {
        massive[i] = '\0';
    }
    Enter(massive);
    char symbol='\0';
    EnterS(symbol);
    char *mas = new char[3];
    ToHex(symbol, mas);
    Change(massive, mas);
    for (size_t i = 0; i < 20; i++)
    {
        cout << massive[i];
    }
    system("pause");
}

http://www.cyberforum.ru/cpp-beginners/thread2174109.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2014, 22:48
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Считывание чаров из cin происходит не корректно (C++):

Почему не происходит ввод? (cin)
Здравствуйте. Скажите, пожалуйста, почему нету приглашения ввести переменную...

считывание строки cin.getline()
То место, где нужно вводить фамилию, не работает, точнее, его просто пропускает...

Защита от дурака при вводе текста с помощью: cin.get cin.clear cin.sync
Доброго времени суток. На С++ учусь с недавних пор. Имеется стандартная &quot;защита...

Объясните пожалуйста как работают cin.good(), cin.sync(), cin.clear()
Такая проблема: сдаю в вуза лабораторные по программированию, писал все сам, до...

Как происходит считывание из файла?
Вот код на си, где мы считываем файл, где первая и вторая строчки числа. Можете...

3
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
11.11.2014, 23:37 #2
C++
1
2
3
4
5
6
void Enter(char* massive)
{
    cout << "Введите строку" <<endl;
    cin.get(massive, 20);
    while (cin.get() != '\n');
}
1
Алерон
5 / 5 / 2
Регистрация: 13.10.2009
Сообщений: 542
12.11.2014, 00:17  [ТС] #3
lss, большое спасибо! А вы не могли бы объяснить почему это происходит?
0
lss
926 / 855 / 355
Регистрация: 10.10.2012
Сообщений: 2,705
12.11.2014, 00:22 #4
Цитата Сообщение от Алерон Посмотреть сообщение
почему это происходит?
Это - что?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2014, 00:22
Привет! Вот еще темы с решениями:

Как происходит считывание переменных из Edit?
Как происходит считывание переменных из edit ,и как в С++происходит заполнение...

Не происходит считывание (getline) из файла. Исправить код
По какой-то непонятное причине не хочет читать getline' ом в функции GetStr....

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

Считывание слов из потока cin и вывод их в поток cout, с заменой нежелательных слов словом "Bleep"
Напишите программу, заглушающую нежелательные слова; иначе говоря, считайте...


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

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

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