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

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

Войти
Регистрация
Восстановить пароль
 
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
#1

как остановить ввод, когда text[i] доходит до маркера? - C++

18.03.2012, 20:39. Просмотров 861. Ответов 2
Метки нет (Все метки)

Возникла проблема, не знаю как правильно сделать это: остановить ввод при достижении маркера. У меня текст в файле имеет размер меньший, чем размер массива и в некоторых ситуациях программа выводит еще вот такие вещи: 'M'. Динамические массивы использовать нельзя. Когда пишу ввод так:
C++
1
input >> text[i];
, то программа пропускает пробелы.
Вот этот код работает, но он просто выводит выводит текст(даже без маркера):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "RUS");
    const int size = 256;
    char mark = '*';
    char text[size], slovo[size];
    int i = 0;
    ifstream input("D://l3/input.txt");
    while(input.peek() != EOF)
    {
        input.getline(text, size);
    }
    cout << text << endl;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 20:39     как остановить ввод, когда text[i] доходит до маркера?
Посмотрите здесь:

как остановить ввод без ошибок ? - C++
#include &lt;iostream&gt; int main() { int book, sum; while (std::cin &gt;&gt;book){ sum+=book; } std::cout &lt;&lt; sum&lt;&lt; std::endl; ...

Остановить ввод после нажатия клавиши enter - C++
for(int i=0;pass;i++) cin&gt;&gt;pass;-перестает вводить символы после третьего. весь код: #include &lt;iostream&gt; #include &lt;cstdlib&gt; ...

Циклический алгоритм: прекратить ввод, когда сумма введенных чисел превысит 100 - C++
Вводятся положительные числа. Прекратить ввод, когда сумма введенных чисел превысит 100. Помогите будьте так любезны.

как остановить программу? - C++
я написал простенькую программу и у меня появилась проблема. когда запускаю программу вожу число программа с ним чото делает а кода...

как остановить цикл ? - C++
у меня есть цикл : do{ cout&lt;&lt;&quot;vvedite celoe chislo: &quot;&lt;&lt;endl; cin&gt;&gt;a; for(i=0; i&lt;47; i++) if (a%mas==0) ...

Как остановить программу? - C++
Здравствуйте. Сабж. #include &quot;stdafx.h&quot; #include &quot;vector&quot; #include &quot;conio.h&quot; using namespace std; void...

Как остановить выдачу ошибки? - C++
repeat: if(e&lt;=mode){ cout &lt;&lt; &quot;\nИгрок №&quot; &lt;&lt; e &lt;&lt; a &lt;&lt; endl; cin &gt;&gt; sim &gt;&gt; b;//записываем в строку для...

Как остановить программу на минуту? - C++
Гуглил минут тридцать пять на все лады- нет. Там и прием витамина С перед сном, и все виды остановок чего и кем угодно- только не...

Как остановить выполняемую функцию? - C++
Доброго времени суток. :) Перейду к проблемме: Для моей программы нужна кнопка &quot;отмена&quot; так вот а как можно остановить выполняемою функцию....

как остановить проигрывание звука - C++
Привет) пишу программу в WindowsForm. на форме есть кнопка, которая открывает WAV-файл и проигрывает (код взят отсюда...

Как остановить цикл при вводе enter? - C++
#include &lt;iostream&gt; using namespace std; int main() { for (;;) { //как остановить цикл при вводе enter ...

Как остановить выполнение кода в запущенном таймере? - C++
Здравствуйте. У меня есть таймер(в С++), в нем выполняются какие-либо действия и когда я нажимаю на кнопку мне надо остановить выполнение...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrCold
852 / 750 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
18.03.2012, 22:33     как остановить ввод, когда text[i] доходит до маркера? #2
Kirill Losev, предлагаю посимвольно считывать :
1) весь текст в массив ,а затем обрезать по маркер
Или
2) breakОМ ввод остановить


1.
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
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
 
int main()
{
        setlocale(LC_ALL, "RUS");
        const int size = 256;
        size_t pos;
        char mark = '*';
        char text[size], slovo[size];
        int i = 0;
        ifstream input("D://l3/input.txt");
 
        /// ЧИТАТЬ ФАЙЛ ПОКА НЕ КОНЕЦ ФАЙЛА  
        /// ЧИТАТЬ ФАЙЛ ПОКА НЕ КОНЕЦ МАССИВА
        while(!input.eof() && text) 
        {
            
                input.get(text[i]);// ПОСИМВОЛЬНО СЧИТЫВАЕМ
                if(text[i] == mark) pos = i;
                i++;
        }
        text[pos] = '\0';  // ОБРЕЗАТЬ МАССИВ ПО МАРКЕР
        cout << text << endl;
}
2.
C++
1
2
3
4
5
6
7
8
9
10
        while(!input.eof() && text  ) 
        {
            
                input.get(text[i]);// ПОСИМВОЛЬНО СЧИТЫВАЕМ
                if(text[i] == mark) break;//pos = i;
                i++;
        }
        text[i] = '\0';  // ОБРЕЗАТЬ МАССИВ 
        cout << text << endl;
}
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
18.03.2012, 22:43  [ТС]     как остановить ввод, когда text[i] доходит до маркера? #3
MrCold, спасибо. попытаюсь использовать по-максимуму
Yandex
Объявления
18.03.2012, 22:43     как остановить ввод, когда text[i] доходит до маркера?
Ответ Создать тему
Опции темы

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