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

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

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

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

18.03.2012, 20:39. Просмотров 893. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 20:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как остановить ввод, когда text[i] доходит до маркера? (C++):

как остановить ввод без ошибок ? - 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; ...

Как остановить плеер, когда играет другой - jQuery
Здравствуйте. Очень надеюсь на вашу помощь, сама уже несколько дней мучаюсь. На странице есть несколько плееров с плейлистами. Нужно...

Как остановить ввод текста - C (СИ)
как остановить ввод текста в консоль и чтобы он сохранился в фаиле для етого кода FILE* f = fopen(&quot;text1.txt&quot;, &quot;w&quot;); int c; while((c...

Как отключить (системный?) звук "БИП", когда курсор доходит до конца строки? - Linux
Например, когда открываешь терминал, вводишь логин и пароль, а потом начинаешь жать стрелки влево-вправо, или когда переименовываешь файл...

Проблема с LOG( i ) когда доходит до 100 - Visual Basic
10 DoEvents i = i + 1 Form1.Label2.Caption = i dan = Log(i) Form1.Label1.Caption = dan If dan = Fix(dan) Then ...

2
MrCold
855 / 753 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
18.03.2012, 22:33 #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;
}
1
Kirill Losev
3 / 3 / 0
Регистрация: 01.10.2011
Сообщений: 249
18.03.2012, 22:43  [ТС] #3
MrCold, спасибо. попытаюсь использовать по-максимуму
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2012, 22:43
Привет! Вот еще темы с ответами:

Как ввод чисел остановить после ввода числа 42? - C#
Задача такова: пользователь вводит однозначные или двузначные числа типа integer, обработка ввода останавливается после ввода числа 42....

Бесконечная перезагрузка, когда загрузка доходит до рабочего стола. - Компьютерное железо
после перестановки windowsa нормально работал 2 часа. стал постоянно сам перезагружаться- доходит до рабочего стола и на перезагрузку. и...

Ползунок advtrackbar уходит влево, когда воспроизведение доходит до 1:10 - Delphi
помогите решить проблему, ползунок advtrackbar уходит влево, когда воспроизведение доходит до 1:10 проверял его работу с TMediaPlayer,...

Пропадает изображение, когда доходит до загрузки Windows, nv 440xx - Видеокарты
Имеется мать Asrock P4i65GV , видеокарта в заголовке. Суть проблемы в том, что при запуске системы, дойдя до момента загрузки windows (окно...


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

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

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