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

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

24.05.2014, 13:44. Просмотров 281. Ответов 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;
 
        }

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

Как пропустить строки при считывании?
Как считать данные, пропустив первые 5 строк? образец файла: LECROYHDO4034A...

Переполнение строки при считывании из файла
Считываю я строки из файла, в котором их 500 тысяч. Если строка начинается на...

Как учитывать пробелы при считывании строки в консоли?
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;windows.h&gt; using namespace...

Не работает cin.getline при считывании строки большей буфера
Доброго всем времени суток!:) Проблема состоит в том, что если ввести 4 и более...

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

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

Добавлено через 1 минуту
Вариант ввода, при котором такое не происходит:
C++
1
(cin >> n).get();
0
NaSiC
1 / 1 / 2
Регистрация: 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");
}
Вот.
А вот какой цикл выполняется:
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.05.2014, 14:24 #5
Лучший ответ Сообщение было отмечено NaSiC как решение

Решение

Цитата Сообщение от NaSiC Посмотреть сообщение
ввод был переменной для case и всё.
Про это и написал.
Цитата Сообщение от NaSiC Посмотреть сообщение
Не помогло, но ваш вариант уже запрашивает ввод строки. Но не может взаимодействовать с ней.
Вы не поняли, о чём я написал. Вот эдесь нужно сделать:
C++
1
(cin >> choice).get();
0
NaSiC
1 / 1 / 2
Регистрация: 24.05.2014
Сообщений: 11
24.05.2014, 14:26  [ТС] #6
alsav22, больше спасибо.
0
24.05.2014, 14:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2014, 14:26
Привет! Вот еще темы с решениями:

Проблема при считывании из файла
Пишу простенькую программу по криптографии. В результате шифрования получается...

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

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

Разделение текста при считывании
Проблема такова: При записывании строки в файл сама строка должна записываться...


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

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

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