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

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

11.11.2014, 22:48. Просмотров 255. Ответов 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");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2014, 22:48
Ответы с готовыми решениями:

Как работает cin.peek, cin,get, cin.ignore, cin.clear?
Здравствуйте, товарищи и не товарищи!:) Я только начал изучать C++, а уже...

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

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

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

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

3
lss
930 / 859 / 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
930 / 859 / 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....


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

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

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