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

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

  • автор:

Вставить в строку пробелы с конца

Суть в том, что надо вставить пробелы в массив типа char с конца через каждые 3 символа, чтобы введя 1234567890, на выходе получалось 1 234 567 890. Я смог только обратится к концу массива, однако как вставить пробелы я без понятия. Буду благодарен за любую помощь

int main() < setlocale(0, ""); srand(time(0)); const int size = 80; char num[size]; cout system("pause"); return 0; > 

Отслеживать
219k 15 15 золотых знаков 120 120 серебряных знаков 230 230 бронзовых знаков
задан 15 дек 2020 в 6:47
bruhmomentum bruhmomentum
59 1 1 серебряный знак 9 9 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Вот пример кода с комментариями:

int real_size = strlen(num); //Количество отступов int count = real_size / 3 + (bool)(real_size % 3) - 1; //Обрезаем нашу новую строку num[real_size + count] = '\0'; //Проходим по всем тройкам с конца, кроме первой for (int i = real_size - 1; i >= 3; i -= 3) < //Можно без цикла просто перенести три символа назад на count позиций for (int j = 0; j

Объясню идею через пример.

Есть строка 1234567 у нее count = 2 т.к. в итоге получим 2 пробела. И первую с конца тройку мы сместим сначала на 2 позиции. Т.к. мы знаем что будет еще одна тройка, которую мы уже сместим на 1 позицию. Получается каждую следующую тройку мы будем смещать на 1 позицию меньше, чем предыдущую. Надеюсь понятно объяснил.

Ввод строки char с пробелами

Author24 — интернет-сервис помощи студентам

Всем доброго дня.
Подскажите плз, У меня есть указатель char *str как ввести в него строку с пробелами которую ввел пользователь. Класс стринг нельзя использовать и его функции.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Ввод строки с пробелами в поле char
Это часть файла header.h; В программе в поле Name нужно ввести ФИО с пробелами, но программа выдает.

Ввод строки с пробелами
Всё, сдаюсь. Ребят, подскажите, пожалуйста, как строку с пробелами считать int main ()

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

Ввод строки с пробелами
Я искал насчет этого в поиске и прочитал про get gets getline fgets, так и не понял. Кто то может.

148 / 139 / 18
Регистрация: 13.10.2012
Сообщений: 592

1 2 3
int size = 256; char* str = new char[size]; cin.getline(str, size);

Регистрация: 26.03.2012
Сообщений: 22
а если нужно больше чем 256 символов?как обойтись без ввода количества символов?
2657 / 2232 / 240
Регистрация: 03.07.2012
Сообщений: 8,131
Записей в блоге: 1
Задай size 10000 (или 100000)
Регистрация: 26.03.2012
Сообщений: 22
дело состоит в том что нужно сделать без єтого и там еще задача с мин использованием памяти и проц
2657 / 2232 / 240
Регистрация: 03.07.2012
Сообщений: 8,131
Записей в блоге: 1
Никаких доп. требований в первом сообщений я не вижу.
Регистрация: 08.09.2014
Сообщений: 88

Подскажите по теме.
Этот "new" что за штука?
Я понял, что благодаря ему можно:
1) задавать массив переменного размера
2) если я использую эту конструкцию в функции и возвращу указатель, то содержимое сохранится.
пробовал сделать без "new" - не получилось. Правильно понимаю?

7699 / 6495 / 2955
Регистрация: 14.04.2014
Сообщений: 28,310

Память динамически выделяется. Что значит переменного? Ты размер указываешь один раз при вызове, после его изменить нельзя, только создать массив другого размера и перенести из первого нужные данные.
Конкретно в этом примере можно обойтись обычным массивом. Консоль Windows, например, больше 4096 символов не позволяет ввести за 1 раз.

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Ввод строки с пробелами
Собственно вот текст, не хочет никакими функциями принимать строку stud.fio с пробелами, испробовал.

Ввод строки с пробелами
Знающие, помогите решить такую проблему. Надо составить маленькую программку, представление.

Ввод строки с пробелами
Мне необходимо ввести несколько слов в строку, использую getline, но в консоле когда в меню.

Ввод строки с пробелами
Нужна помощь!Как сделать так,чтобы после нажатия на пробел программа не заканчивала ввод в строку,а.

Или воспользуйтесь поиском по форуму:

Как в 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".

Как ввести в 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

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

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

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