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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
NaSiC
1 / 1 / 0
Регистрация: 24.05.2014
Сообщений: 11
#1

Зацикливает, при считывании строки - C++

24.05.2014, 13:44. Просмотров 229. Ответов 5
Метки нет (Все метки)

Даже не запрашивает ввод, сразу зацикливает.
Что не так?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        case 3:
        {   
            
            char* r = new char[60];
            int i, z = 0, n = 0, l;
 
            cout << "Введите строку:  " << endl;
            cin.get(r,60);
 
                    l = strlen(r);
            for (i = 0; i <= l; i++)
            if (r[i] == ' ')
                z++;
 
            cout << "Слов в тексте: " << z + 1 << endl;
            cout << "Количество символов: " << strlen(r) << endl;
            break;
 
        }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2014, 13:44     Зацикливает, при считывании строки
Посмотрите здесь:

Переполнение строки при считывании из файла - C++
Считываю я строки из файла, в котором их 500 тысяч. Если строка начинается на R, то я записываю её в другой файл. Примерно на 312000-й...

Ошибки при считывании строки из файлы - C++
Добрый вечер. Бьюсь с этой проблемой уже не первый день. Но вразумительно ответа в интернете так и не нашел. В программе нужно считать...

Как учитывать пробелы при считывании строки в консоли? - C++
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;windows.h&gt; using namespace std; int main() { setlocale( LC_ALL, &quot;.866&quot;...

Не работает cin.getline при считывании строки большей буфера - C++
Доброго всем времени суток!:) Проблема состоит в том, что если ввести 4 и более символов cin.getline(boofer, 3); перестаёт работать. Как я...

Зацикливает при вводе чётного числа. While - C++
Условие: Дано целое число N (&gt; 0). С помощью операций деления нацело и взятия остатка от деления определить, имеются ли в записи числа...

Ошибка при считывании xml - C++
День добрый! Код: #include &lt;iostream&gt; #include &quot;conio.h&quot; #include &quot;tinyxml.h&quot; #include...

Не находит пробелы при считывании - C++
ifstream file_i(&quot;text.txt&quot;); for(int j = 0; j &lt; 32; j++){ file_i &gt;&gt; CH; } Дан файл...

Переполнение при считывании из файла - C++
Подскажите пожалуйста, где ошибка, вот код чтения из файла: void read_file(void) { int mass; FILE* file = fopen(&quot;arr.txt&quot;, &quot;r&quot;); ...

Проблема при считывании из файла - C++
Пишу простенькую программу по криптографии. В результате шифрования получается txt файлик с набором закорючек(он во вложении). Для...

Отрицательный char при считывании string - C++
Вечер добрый, у меня всего три вопроса (вопросы помечены цифрами) Изначально строчка выглядит так: &lt;English&gt;...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
slayster
5 / 5 / 1
Регистрация: 25.03.2014
Сообщений: 20
24.05.2014, 13:55     Зацикливает, при считывании строки #2
Искать количество слов в тексте, используюя поиск по пробелу, не очень корректно. Если добавить лишний пробел, оно засчитает его как слово. Как вариант, разбить строку на слова и посчитать их количество, используя strtok. Количество символов будет на 1 больше strlen(r)+1, т.к добавляет в конец '\0'.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2014, 13:59     Зацикливает, при считывании строки #3
Цитата Сообщение от NaSiC Посмотреть сообщение
Что не так?
Где-то перед case был ввод (через cin >> ), и в потоке остался '\n'.

Добавлено через 1 минуту
Вариант ввода, при котором такое не происходит:
C++
1
(cin >> n).get();
NaSiC
1 / 1 / 0
Регистрация: 24.05.2014
Сообщений: 11
24.05.2014, 14:20  [ТС]     Зацикливает, при считывании строки #4
slayster, написал первое, что влезло в голову. Спасибо, буду пробовать.

alsav22, ввод был переменной для case и всё.

Не помогло, но ваш вариант уже запрашивает ввод строки. Но не может взаимодействовать с ней.
C++
1
(cin >> n).get();
Добавлено через 1 минуту
Сейчас кину полный код. (без case 1 и 2).

Добавлено через 5 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void main ()
{
    setlocale(0, "");
    int choice;
    do
    {
 
        cout << "1. Одномерный массив" << endl << "2. Матрица" << endl << "3. Строка" << endl << "4. Выход" << endl << "Ваш выбор: ";
        cin >> choice;
        switch (choice)
        {
        case 1:             //пукты меню
        case 2:
        case 3:
        case 4:
        default:
        }
    } while (choice != 4);
    system("pause");
}
Вот.
А вот какой цикл выполняется:
http://***********/d34bece2/
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2014, 14:24     Зацикливает, при считывании строки #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от NaSiC Посмотреть сообщение
ввод был переменной для case и всё.
Про это и написал.
Цитата Сообщение от NaSiC Посмотреть сообщение
Не помогло, но ваш вариант уже запрашивает ввод строки. Но не может взаимодействовать с ней.
Вы не поняли, о чём я написал. Вот эдесь нужно сделать:
C++
1
(cin >> choice).get();
NaSiC
1 / 1 / 0
Регистрация: 24.05.2014
Сообщений: 11
24.05.2014, 14:26  [ТС]     Зацикливает, при считывании строки #6
alsav22, больше спасибо.
Yandex
Объявления
24.05.2014, 14:26     Зацикливает, при считывании строки
Ответ Создать тему
Опции темы

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