Перейти к содержимому

Как ввести строку с пробелами в c char

  • автор:

Как в C++ ввести строу char[], содержащую пробелы?

Может кто подскажет:
Как в C++ ввести строу char[], содержащую пробелы?

#1
19:41, 26 окт 2007
#2
19:49, 26 окт 2007
#3
19:49, 26 окт 2007

уточни, что ты хочешь?
ввести строку с клавиатуры или создать строку?

#4
19:59, 26 окт 2007

Хочу, чтобы было аналогично следующему:
//.
char str[MAX_LENGTH];
//.
cin >> str;
cout Но так, что если введена строка «asd asdfs a aewt wet dsg asd», то она и должна быть выведена, а не «asd».

Как ввести строку с пробелами в c char

Сообщение от forsaken66

#include "stdafx.h" #include "iostream" #include "conio.h" #include "stdio.h" #include "string" using namespace std; char *s=""; int main () < cout 

выдает ошибку при вводе строки. не пойму. нет, ясное дело можно использовать string. Но а если char *s то как организовать ввод?

читайте ошибки компилятор которые выдает

error C2661: gets: нет перегруженной функции, принимающей 2 аргументов

вот исправил чуток

#include "iostream" #include "conio.h" #include "stdio.h" #include "string" using namespace std; int main ()

Последний раз редактировалось kedbl4; 19.11.2009 в 12:15 . Причина: неправильно ввел

Как ввести в cin строки с пробелами в С++

По умолчанию cin (стандартный ввод) в С++ считывает данные до первого пробела. Рассмотрим способы, с помощью которых мы можем передать через стандартный ввод строку, содержащую один или нескольких пробелов, чтобы эта строка могла быть присвоена в качестве значения переменной в программе.

cin по умолчанию пропускает все белые пробелы (пробелы, табуляции, новые строки и т. д.). Вы можете либо изменить его поведение, либо использовать немного другой механизм.

Рассмотрим небольшую программу, которая просит пользователя ввести имя и после этого сразу же отображает введённую строку на экране. Приведённый код работает так, как ожидается, если вводимые данные не содержат пробелов:

#include using namespace std; int main() < string line; cout > line; cout

Для запуска этого кода сохраните его в файл test.cpp и скомпилируйте:

g++ test.cpp

Запуск скомпилированного файла:

./a.out

Попробуем ввести строку с пробелами:

Как можно увидеть, из введённой строки «Алексей Милосердов», сохранилось только часть до пробела, то есть «Алексей».

Чтение строки с getline

getline читает символы из входного потока и помещает их в строку — именно это нам и нужно. getline (как и использование строки), требует указать заголовок #include . Отредактируем наш код:

#include #include using namespace std; int main()

Как можно убедиться, теперь строка считалась полностью, вместе с пробелами.

Изменение поведения cin с помощью noskipws

Как мы уже выяснили, по умолчанию cin пропускает все белые пробелы (пробелы, табуляции, новые строки и т. д.). Чтобы изменить его поведение, используйте манипулятор noskipws следующим образом:

cin >> noskipws >> line;

noskipws включает пропуск начальных пробелов с помощью форматированных функций ввода (по умолчанию включено). Не влияет на вывод.

То есть noskipws не поможет нам передать через стандартный ввод строки, содержащие в себе пробелы, кроме тех случаев, когда пробелы стоят в начале строки.

Чтобы стало понятнее, рассмотрим следующий код:

#include #include using namespace std; int main() < char c1, c2, c3; istringstream("a b c") >> c1 >> c2 >> c3; cout > noskipws >> c1 >> c2 >> c3; cout

В результате работы этого кода будет выведено:

Поведение по умолчанию: c1 = a c2 = b c3 = c Поведение с noskipws: c1 = a c2 = c3 = b

Смотрите также онлайн учебник «Основы С++».

Как ввести строку с пробелами,используя scanf в Си,не используя gets?

Я использую scanf("%s",&s);
На введеную фразу например "Они учатся в школе";Переменной s присваивается "Они".
использую char *s(или S[256]).Подключаю String.h.
Как сделать,чтобы s присваивалась фраза "Они учатся в школе"?

Дополнен 14 лет назад
Может можно ввести строку другим образом?Только не на Си++,а именно на Си?
Дополнен 14 лет назад
scanf("%s\n",&s); не работает.
Лучший ответ

Есть такая идея) , но нужно знать точно количество слов и их длину.. .
char s1[10],s2[10],s3[10],s4[2]=" ";
scanf("%s %s %s",&s1,&s2,&s3);
strcat(s1,s4);
strcat(s1,s2);
strcat(s1,s4);
strcat(s1,s3);
puts(s1);

Хотя лучше всего воспользоваться gets()

Остальные ответы

Нельзя. scanf считывает только до первого пробела.

Гм, в Си кроме gets() есть ещё и getchar(), но это посимвольный ввод. Осуществить можно, но будет слишком извращённо.

Попробуй scanf("%s\n",&s);

Сканф так специально придуман, чтобы вводить строку до первого разделителя - это млжет быть пробел, табуляция, перевод строки.

scanf("%s", strana[i]);
/*ввести слова через пробелы и нажать в конце Enter: ыаыва ываыва ываыв Enter*/
/*сканф зат¤пает только одно слово до пробела, а остальные оставит в буфере stdin*/
fgets(goroda[i], MAX_LENGTH_OF_STRING, stdin);
/*эта функци¤ не будет ожидать ввода, он съест все что осталось после сканфа в stdin*/

Множество сканирования scanf
char s[100];
scanf("%[^\n]",s);// все кроме \n
printf("%s\n",s);
Вводим:
Hello world
Печатает:
Hello world

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *