Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для GBIT
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223

Работа с массивом с через strcpy_s()

14.07.2015, 11:22. Показов 1810. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Функция addBrackets принимает массив и преобразует его заключая в скобки [].
т.е. на на вход массив: text
после преобразования: [text]
Вылетает эксепшен "boffer is too small" на первом strcat. Что не так делаю?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
 
void addBrackets(char* buffer)
{
    char *result = new char[strlen(buffer)];
    result[0] = NULL;
 
    strcat_s(result, strlen("["), (const char *)"[");
    strcat_s(result, strlen(buffer), (const char *)buffer);
    strcat_s(result, strlen("]"), (const char *)"]");
 
    strcat_s(buffer, strlen(result), result);
 
    delete []result;
}
 
int main()
{
    const int len = 10;
    char str1[len];
    str1[0] = NULL;
 
    strcat_s(str1, (const char *)"text");
    if (strlen(str1) < len - 2)
    {
        addBrackets(str1);
        std::cout << str1 << std::endl;
    }
 
    return 0;
}
Добавлено через 21 минуту
Достаточно просто пояснить почему вот это не работает:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
int main()
{
    char *str1 = new char[100];
 
    strcpy_s(str1, strlen("text"),"text");
 
    delete[]str1;
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.07.2015, 11:22
Ответы с готовыми решениями:

Работа с массивом через пользовательские функции через указатели
Не хочет работать ( Выводит только последний элемент массива ) Help! #include &lt;iostream&gt; using namespace std; void vvod(int x,...

Работа с массивом через указатели
Приветствую всех, форумчане! Проблемка у меня с данным кодом в следующем: что-то с указателями я намешал и получилось так, что вообще не...

Работа с массивом через геттер и сеттер
#include &lt;iostream&gt; using namespace std; class My_Class { private: int *p; public: My_Class() { p = new int ;

3
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
14.07.2015, 11:59
Цитата Сообщение от GBIT Посмотреть сообщение
почему вот это не работает
Неверно указан размер буфера.
0
 Аватар для GBIT
14 / 14 / 5
Регистрация: 05.10.2011
Сообщений: 223
14.07.2015, 12:06  [ТС]
Нашел вот такое, думаю это имеет отношение к моему вопросу:
C++
1
2
3
4
char A[80];
char * B = new char[80];
cout << "size of A = " << sizeof(A) << endl;
cout << "size of B = " << sizeof(B) << endl;
Источник
Но я не понимаю почему такой вывод:
size of A = 80
size of B = 4

gazlan, подскажите, как правильно скопировать в динамический массив - массив const char*?
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
14.07.2015, 12:22
Ну, почитайте хоть что-нибудь о строках в С. И, заодно, о стиле кодирования. Чтобы не было такого кошмара, как выше

sizeof(B) - это размер указателя. На 32-битной системе это 4 байта.

и sizeof(A) != strlen(A)

Строка в С - это массив байт с терминирующим нулем (ASCIIZ strings). При любых операциях со строками об этом нужно помнить и, при необходимости, учитывать.

Например, strlen("abracadabra") = 11, но sizeof("abracadabra") = 12.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.07.2015, 12:22
Помогаю со студенческими работами здесь

Работа с массивом через диалоговое меню
Я новичок, ошибок куча. Прошу указать по возможности на каждую. Программа не запускается из - за ошибок, как решить их - не знаю(( ...

Массив структур. Работа с массивом через функции
Здравствуйте! Дано задание: 1) создать массив структур 2) заполнить его через ф-цию 3) вывести массив 4) добавить n-ое кол-во...

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

Работа с массивом. Смена картинок через перебор массива
Добрый день уважаемые. Подскажите пожалуйста как запрограмировать перебор массива. https://jsfiddle.net/spepaLke/ У меня почему-то не...

Работа с массивом структур в функции через указатель на этот массив
Добрый вечер. Имеется следующая задача: &quot;Разработайте программу, сохраняющую записи (порядковый номер ввода, число с плавающей точкой и...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru