Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236

char массив, get(), ввести больше символов чем в массиве

17.08.2013, 19:42. Показов 5598. Ответов 45
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
setlocale(LC_ALL,"");
 
char AAA[10];
char BBB[10];
 
cout << "Введите первый массив: ";
cin.get(AAA, 10);
 
cout << "Введите второй массив: ";
cin.get(BBB, 10);
 
system("pause");
return 0;
}
если я при вводе первого массива, введу больше 12 символов, допустим 12, то второй массив мне ввести не даст, как избавится от этого? cin.ignore() не помогает.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.08.2013, 19:42
Ответы с готовыми решениями:

Как заполнить массив char если заранее не известно сколько символов в массиве?
Есть массив с ведомым к-вом элементов, но в него могут ввести слово с любым к-вом элементов которое не превышает к-во элементов в...

Можно ли в char строку копировать больше байт, чем ее размер?
char a = &quot;ab&quot;; strcpy(a, &quot;abcd&quot;); Можно ли так делать? Компилятор не ругнулся и при выполнении не вылетела. Память автоматически...

Ввести в массив слов все слова из предложения, в которых гласных букв больше, чем согласных
В общем, задача 1 курса: Пользователь вводит предложение.. Нужно ввести в массив слов все слова из этого предложения, в которых гласных...

45
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 22:07
Студворк — интернет-сервис помощи студентам
Согласен с тем, что тут определенно лучше пользоваться типом string, раз уж речь идет о С++ ...
0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
17.08.2013, 22:18  [ТС]
Руки уже заплетаются, ну и мозг вместе с ним, не буду рыться в книге, там написано, почему лучше использовать char, я сейчас учу запись в файл, редактирование, чтение из файла, и вроде как, потому что там определенное количество в отличии от string, по этому приходится использовать массив char, я не думал что так сложно с "обрубкой" не нужных (превышающих лимит) символов.
Наверное проще использовать преобразовании string в char
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 22:20
Цитата Сообщение от VLK Посмотреть сообщение
не буду рыться в книге, там написано, почему лучше использовать char
Если в этой книге говорится про работу со строками в С++, тогда лучше выкинь её и найди другую.
0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
17.08.2013, 22:22  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Если в этой книге говорится про работу со строками в С++, тогда лучше выкинь её и найди другую.
выкинуть дейтела?
0
 Аватар для icpu
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
17.08.2013, 22:23
C++
1
2
3
4
5
6
7
const int MaxSize = 10;
string input
cin >> input;
if (input.size()>MaxSize)
   input.erise(input.begin()+10,input.end());
char blah[MaxSize+1]={0};
strcpy(blah,input.c_str());
или
C++
1
2
3
4
5
const int MaxSize = 10;
string input
cin >> input;
char blah[MaxSize+1]={0};
strncpy(blah,input.c_str(),MaxSize);
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 22:25
Цитата Сообщение от VLK Посмотреть сообщение
выкинуть дейтела?
А ты уверен что там так написано? (я Дейтела не читал, но слышал что книга не плохая)
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.08.2013, 22:26
Цитата Сообщение от VLK Посмотреть сообщение
не думал что так сложно с "обрубкой" не нужных (превышающих лимит) символов.
никаких сложной нет, это твоя невнимательность
0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
17.08.2013, 22:28  [ТС]
Цитата Сообщение от Jupiter Посмотреть сообщение
никаких сложной нет, это твоя невнимательность
в чем именно заключается невнимательность
0
 Аватар для icpu
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
17.08.2013, 22:30
Это так, навскидку, а вообще, странно, что используется постоянно смесь C и C++. Либо вы классик, используете malloc, scanf("%10d",&a) и void*, либо вы новатор, и тогда ваш выбор new, cin и string.
А вообще, по стандарту вводиться должно без мусора.
попробуйте просто исправить
C++
1
2
char AAA[10] = {0};
char BBB[10] = {0};
0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
17.08.2013, 22:32  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
А ты уверен что там так написано? (я Дейтела не читал, но слышал что книга не плохая)




вот в программе + описание, там написано почему

Или я опять что то не так понял?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 22:39
Цитата Сообщение от VLK Посмотреть сообщение
Или я опять что то не так понял?
Опять. Там написано что программа должна работать с "записями постоянной длины" и поэтому там используется массив символов типа char. Ткни меня носом где сказано что использование массивов символов правильней и удобней чем использование класса string.

Цитата Сообщение от icpu Посмотреть сообщение
Либо вы классик, используете malloc, scanf("%10d",&a) и void*
void * - не используется в С++ ?
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
17.08.2013, 22:40
Цитата Сообщение от VLK Посмотреть сообщение
в чем именно заключается невнимательность
невнимательность заключается в причине по которой создана тема:
Цитата Сообщение от VLK Посмотреть сообщение
cin.ignore() не помогает.
и того что подавалось на ввод
0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
17.08.2013, 22:45  [ТС]
Цитата Сообщение от castaway Посмотреть сообщение
Опять. Там написано что программа должна работать с "записями постоянной длины" и поэтому там используется массив символов типа char. Ткни меня носом где сказано что использование массивов символов правильней и удобней чем использование класса string.
Ну я только начинающий и по мне при работе с записью в файл лучше использовать фиксированную длину (особенно если ты начинающий ), а у string то она не фиксированная?

Добавлено через 2 минуты
Jupiter, но ведь рабочий вариант, он не позволяет вводить несколько слов через пробел
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 22:47
Цитата Сообщение от VLK Посмотреть сообщение
а у string то она не фиксированная?
Метод string::c_str() возвращает указатель с фиксированной длиной.
0
 Аватар для icpu
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
17.08.2013, 22:48
castaway, избегаются всеми возможными способами, ибо есть касты. По крайней мере приводить к пустоте по-хорошему нельзя. Баста.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 22:49
Цитата Сообщение от icpu Посмотреть сообщение
castaway, избегаются всеми возможными способами, ибо есть касты. По крайней мере приводить к пустоте по-хорошему нельзя. Баста.
Что ты сейчас сказал? Я ни черта не понял. Особенно не понял к чему ты это сказал..
0
 Аватар для icpu
487 / 365 / 93
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
17.08.2013, 22:56
Цитата Сообщение от castaway Посмотреть сообщение
void * - не используется в С++ ?
Для приведения типов используются static_cast, dynamic_cast, const_cast. Для хранения объектов - умные указатели. Для возможности хранить разные классы в одном массиве, их наследуют от одного предка, после чего вгоняют указатели в вектор.
Тип void* и приведение указателей к void* есть, но их использование может поделить вселенную на ноль нежелательно.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 23:09
icpu, ок. Не это не то о чем я хотел тебя спросить. Что может заменить тип void * в С++ и почему его нежелательно использовать?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
17.08.2013, 23:20
castaway, Иерархия, any и т.д. void* самый простой вариант конечно.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
17.08.2013, 23:26
ForEveR, мм.. что иерархия?
Я не беру в расчет сторонние либы типа boost. К примеру: не вижу причин заменять void * на boost::any в приложении типа "Hello, World!"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.08.2013, 23:26

Задан символьный массив. Ввести с клавиатуры символ и вывести на консоль количество таких символов в массиве.
Помогите решить лабораторные: 1,Задан символьный массив. Ввести с клавиатуры символ и вывести на консоль количество таких символов в...

Двумерный массив. Определить, есть ли в данном массиве строка, содержащая больше положительных элементов, чем отрицательных.
Дан двумерный массив размером п*m, заполненный случайными числами. Определить, есть ли в данном массиве строка, содержащая больше...

Алгоритмы Маркова. A={a,b}. Если в P символов a больше, чем символов b, то выдать ответ a
A={a,b}. Если в P символов a больше, чем символов b, то выдать ответ a, если символов a меньше символов b, то выдать ответ b, а иначе в...

Построить машину Тьюринга. Если в P символов a больше, чем символов b, то выдать ответ a
A={a,b}. Если в P символов a больше, чем символов b, то выдать ответ a, если символов a меньше символов b, то выдать ответ b, а иначе в...

Консоль не позволяет ввести больше 254 символов
День добрый. Столкнулся с очень странной проблемой: в консоль нельзя ни вставить, ни ввести то количество символов, которое она вмещает...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
28. КОнкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энрегоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерировавны.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru