Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2009, 21:17   #1
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию Ввод строки с пробелами

Здравствуйте. Подскажите, пожалуйста, как ввести строку с пробелами в C++? Есть ли что-нибудь кроме gets и cin.getline?

Последний раз редактировалось Сергей089; 24.04.2009 в 21:24.
Сергей089 вне форума Ответить с цитированием
Старый 24.04.2009, 21:23   #2
Troi666
Пользователь
 
Регистрация: 01.12.2008
Сообщений: 58
По умолчанию

#include <stdio.h>
scanf ("%Nc", s); //N - число вводимых символов (максимальное), s - строковая переменная, в которую осуществляется ввод.
Troi666 вне форума Ответить с цитированием
Старый 24.04.2009, 21:25   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Хм.. А чем вас эти функции не устраивают?

Если на C++, то для string:
Код:
istream& getline ( istream& is, string& str, char delim );
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.04.2009, 21:31   #4
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

А можно сделать так, чтобы на символе \0 ввод заканчивался? А то получается пока N символов не считает, не остановится.
Сергей089 вне форума Ответить с цитированием
Старый 24.04.2009, 21:36   #5
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Хм.. А чем вас эти функции не устраивают?
Мне нужно ввести текст с пробелами в 5 строк в цикле. С этими функциями в строку больше 2-х слов у меня записать не получается, вылетает какая-то ошибка, связанная с адресами.
Сергей089 вне форума Ответить с цитированием
Старый 24.04.2009, 21:40   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Сергей089
Мне нужно ввести текст с пробелами в 5 строк в цикле. С этими функциями в строку больше 2-х слов у меня записать не получается, вылетает какая-то ошибка, связанная с адресами.
Так покажите код ) Может, ошибка где-нибудь..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.04.2009, 21:45   #7
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Код:
const count_strings = 5;
const len_str = 50;
struct help
        {
          char term[len_term];
          char **text;
          help *next;
        };
Код:
        help slovo;
        slovo.text = new char *[count_strings];        
        for (int i = 0; i<count_strings; i++)
                {
                  slovo.text[i] = new char;
                  cin.getline(slovo.text[i],len_str);      
                }

Последний раз редактировалось Сергей089; 24.04.2009 в 21:47.
Сергей089 вне форума Ответить с цитированием
Старый 24.04.2009, 21:56   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
slovo.text[i] = new char[len_str];
И еще:
Код:
const int count_strings = 5;
const int len_str = 50;
Уж не знаю, как у вас компилировалось без этого.
А здесь:
Код:
char term[len_term];
у меня ощущение, что должно быть len_str
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.04.2009, 22:10   #9
Сергей089
Форумчанин
 
Регистрация: 22.09.2008
Сообщений: 214
По умолчанию

Спасибо, теперь работает.

Цитата:
у меня ощущение, что должно быть len_str
Нет. У меня там еще константы есть.

А можно ли как-нибудь в структуре использовать не динамические переменные для текста? А то от них уже крыша начинает ехать.
Сергей089 вне форума Ответить с цитированием
Старый 24.04.2009, 22:15   #10
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Вот пример
Заголовочный файл не помню, кажется <string.h>, но я могу ошибаться
Код:
char str[40];
gets(str);
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить повторяющиеся символы(которые повторяются два или три раза) в тексте пробелами. Майки Паскаль, Turbo Pascal, PascalABC.NET 3 12.01.2009 17:45
a=42339, как все цифры этого числа разделить пробелами??? MjRed Помощь студентам 6 19.12.2008 11:09
как прочитать из файла имя, фамилию разделенные пробелами и записать их в массив парами Rom@shka Общие вопросы C/C++ 2 13.12.2008 16:40
КАК сделать ввод строки на русском языке vicdon Паскаль, Turbo Pascal, PascalABC.NET 4 05.11.2007 07:54
Ввод начальных данных из командной строки Bounefarte Помощь студентам 5 26.08.2007 12:49