С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
#1

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

17.08.2013, 19:42. Просмотров 1824. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2013, 19:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос char массив, get(), ввести больше символов чем в массиве (C++):

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

Замена символов в массиве char - C++
Всем привет! Задача: исходная строка (char) содержит числа десятичной системы счисления. Найти их, создать новую строку, в которой...

Поиск слова в массиве символов char - C++
Получаю массив символов типа char из com port. есть ли способ поиска в этом массиве необходимого слова кроме как побайтово копировать ...

В динамическом массиве нельзя ввести больше 1 символа - C++
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main(){ setlocale(LC_ALL, &quot;Russian&quot;); int n; ...

Как заставить Strncpy вложить в itog часть символов строки str, если дина str больше, чем кол-во нужных нам символов? - C++
strncpy(itog,str,size+1); cout&lt;&lt;itog; itog вообще не выводится Добавлено через 2 минуты Вот код. #include &lt;iostream&gt; ...

Чтение входных данных размером больше чем 4096 символов - C++
Даны такие условия задачи, что входные данные введенные с клавиатуры (из файла) могут достигать 10 000 символов их надо соответственно...

45
castaway
17.08.2013, 21:11     char массив, get(), ввести больше символов чем в массиве
  #16

Не по теме:

Цитата Сообщение от Jupiter Посмотреть сообщение
ну я про fflush(stdin)
Это да, fflush( stdin ) однозначно не следует использовать.

0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
17.08.2013, 21:36  [ТС] #17
castaway, еще вопрос
А если мне надо все тоже самое, только ввести 2 слова (через пробел) в один массив, как тогда быть?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 21:46 #18
VLK, std::istream::getline
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
17.08.2013, 21:52  [ТС] #19
Цитата Сообщение от Jupiter Посмотреть сообщение
т.е. записать в string а потом переводить в массив char?
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 21:55 #20
Цитата Сообщение от VLK Посмотреть сообщение
т.е. записать в string а потом переводить в массив char?
нет, глянь код по ссылке.
не путай
метод std::istream::getline с
глобальной функцией std::getline для std::string
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 22:07 #21
Согласен с тем, что тут определенно лучше пользоваться типом string, раз уж речь идет о С++ ...
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
17.08.2013, 22:18  [ТС] #22
Руки уже заплетаются, ну и мозг вместе с ним, не буду рыться в книге, там написано, почему лучше использовать char, я сейчас учу запись в файл, редактирование, чтение из файла, и вроде как, потому что там определенное количество в отличии от string, по этому приходится использовать массив char, я не думал что так сложно с "обрубкой" не нужных (превышающих лимит) символов.
Наверное проще использовать преобразовании string в char
0
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 22:20 #23
Цитата Сообщение от VLK Посмотреть сообщение
не буду рыться в книге, там написано, почему лучше использовать char
Если в этой книге говорится про работу со строками в С++, тогда лучше выкинь её и найди другую.
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
17.08.2013, 22:22  [ТС] #24
Цитата Сообщение от castaway Посмотреть сообщение
Если в этой книге говорится про работу со строками в С++, тогда лучше выкинь её и найди другую.
выкинуть дейтела?
0
icpu
369 / 283 / 65
Регистрация: 10.03.2011
Сообщений: 1,219
Записей в блоге: 2
17.08.2013, 22:23 #25
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
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
17.08.2013, 22:25 #26
Цитата Сообщение от VLK Посмотреть сообщение
выкинуть дейтела?
А ты уверен что там так написано? (я Дейтела не читал, но слышал что книга не плохая)
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
17.08.2013, 22:26 #27
Цитата Сообщение от VLK Посмотреть сообщение
не думал что так сложно с "обрубкой" не нужных (превышающих лимит) символов.
никаких сложной нет, это твоя невнимательность
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
17.08.2013, 22:28  [ТС] #28
Цитата Сообщение от Jupiter Посмотреть сообщение
никаких сложной нет, это твоя невнимательность
в чем именно заключается невнимательность
0
icpu
369 / 283 / 65
Регистрация: 10.03.2011
Сообщений: 1,219
Записей в блоге: 2
17.08.2013, 22:30 #29
Это так, навскидку, а вообще, странно, что используется постоянно смесь C и C++. Либо вы классик, используете malloc, scanf("%10d",&a) и void*, либо вы новатор, и тогда ваш выбор new, cin и string.
А вообще, по стандарту вводиться должно без мусора.
попробуйте просто исправить
C++
1
2
char AAA[10] = {0};
char BBB[10] = {0};
0
VLK
194 / 163 / 12
Регистрация: 05.05.2013
Сообщений: 1,196
17.08.2013, 22:32  [ТС] #30
Цитата Сообщение от castaway Посмотреть сообщение
А ты уверен что там так написано? (я Дейтела не читал, но слышал что книга не плохая)
char массив, get(), ввести больше символов чем в массиве

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

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

Или я опять что то не так понял?
0
17.08.2013, 22:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2013, 22:32
Привет! Вот еще темы с ответами:

Массив символов char и указатели - C++
В общем нужно сохранить путь к диску в переменную, что бы потом использовать в _findfirst Но сколько бы я не бился над этим, ничего не...

не выводится Массив символов (char) - C++
в названии тома и в Файловой системе выводятся непонятные символы. Это по ходу связано с чаровским массивом. Как мне сделать? char...

первод массива char в массив int ( в чем ошибка?????) - C++
не могу понять почему не работает функция void StrToIntMass (int element, char buffer) { int k = 0,j = 0; char...

Вставить число k1 после всех чисел в массиве больше чем digit - C++
int i; int size_of_array=10; int last_element; int second; int even; int k1= 4, k2= 7; float digit = 2;...


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

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

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