Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 29
1

Проблема с символьным массивом char

21.10.2018, 13:28. Просмотров 313. Ответов 3
Метки нет (Все метки)

Доброго времени суток!
C++
1
2
3
4
5
6
7
8
9
10
char buffer[buffsize]; //buffsize принимается как аргумент функции и задает его размерность
        buffer[0]=0; //обнуление массива char
        while(strlen(buffer)<buffsize) //массив должен заполняться до тех пор пока не будет полностью заполнен
        {
            char temp[buffsize]; //временный массив который нужен для работы с поток ввода, имеет такую же размерность как 
                                          //buffer, чтобы не выйти за границы
            cin>>temp; //поток ввода
            strcat(buffer,temp); //добавление к массиву buffer только что введенной строки
        }
        cout<<buffer; //вывода результата
При вызове функции задается размер "буфера" и с ним нужно работать до тех пор пока он не будет заполнен. Я не совсем понимаю почему если я задаю размерность 4 и ввожу строку "111111" все шесть единиц заносятся в буфер, массив же из 4 элементов должен быть. Объясните где я допускаю ошибку.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2018, 13:28
Ответы с готовыми решениями:

проблема с массивом типа CHAR
нужно выполнить функцию fopen() . которая кушает на вход указатель на массив char в качестве пути к...

Проблема с классом и массивом char-ов
Есть класс, содержащий одномерный массив из char-ов и методы для работы с ним. Проблема возникла в...

Работа с символьным массивом
А мучаюсь я с созданием символьного массива...Понятно, что через Char? а вот чего дальше с ним...

Рекурсия с символьным массивом
Здраствуйте! Не получается справиться с заданием, хотя вроде все делаю правильно. Подскажите - что...

3
45 / 30 / 16
Регистрация: 25.02.2017
Сообщений: 103
21.10.2018, 13:33 2
buffsize - константа?
не могли бы вы весь код скинуть
0
Модератор
Эксперт С++
10150 / 8499 / 5165
Регистрация: 18.12.2011
Сообщений: 22,735
21.10.2018, 13:34 3
Цитата Сообщение от DarkMadar Посмотреть сообщение
все шесть единиц заносятся в буфер
Размерность массива при таком вводе никак не проверяется и данные пишутся за пределы массива.
Используйте функцию
C++
1
cin.getline(str, buffsize, '\n'));
Здесь тоже размерность массива не проверяется:
Цитата Сообщение от DarkMadar Посмотреть сообщение
strcat(buffer,temp);
Если на VS, то можете использовать
C++
1
strcat_s(buffer,buffsize,temp);
0
0 / 0 / 0
Регистрация: 02.02.2017
Сообщений: 29
21.10.2018, 14:09  [ТС] 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class test
{
public: 
void testnew(int buffsize)
    {
 
        char buffer[buffsize];
        buffer[0]=0;
        while(strlen(buffer)<buffsize)
        {
            cout<<strlen(buffer);
            char temp[buffsize];
            cin>>temp;
            strcat(buffer,temp);
        }
}
};
в main

C++
1
2
3
4
5
6
int buffsize;
    cout<<"Введите размер буфера"<<endl;
    cin>>buffsize;
    test *tes;
    tes=new test;
    tes->testnew(buffsize);
Добавлено через 32 минуты
Если использовать cin.getline при выходе за установленные границы консоль начитает бесконечно писать рандомную цифру. А при использовании strcat_s он не копирует если я ввел больше символом чем buffsize
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2018, 14:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа с символьным массивом
Помогите пожалуйста.. Определить символьный массив размером строки.С клавиатуры ввести...

Волшебство с символьным массивом указателей
#include &lt;iostream&gt; #include &lt;windows.h&gt; //Для начала установите вручную шрифт Lucida Console в...

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

Работа с массивом char
Вот задание Вам дана непустая строка, состоящая из строчных латинских букв, цифр и пробелов....

Работа с массивом char
Товарищи подскажите пожалуйста, не могу никак понять в чём проблема. Есть массив скажем: int X;...

Работа с массивом char
Добрый день. Объясните, если не сложно, на пальцах в чем ошибка? char*my1={&quot;first my1&quot;,&quot;second...


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

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

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