Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 16.05.2013
Сообщений: 16
1

Ошибка при использовании strcpy

06.08.2015, 19:35. Показов 1308. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, возникла такая проблема

Объявляю массив char *
C++ (Qt)
1
char *names[] = {"asdfg", "hjklqw", "wertyui", "bnmasdfg", "lkjhgfdsa", "qwertuiop"};
Есть некая структура, допустим Record - в ней есть поле char name[25], дальше эта структура передается прикладной функции. Когда я копирую значение из массива в это поле:
C++ (Qt)
1
strcpy(Record->name, names[i]);
при использовании функции возникают ошибки, но если вместо массива использовать просто строку, то все нормально:
C++ (Qt)
1
2
char name[] = "qwertyuiop";
strcpy(Record->name, name);
Где я ошибаюсь?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.08.2015, 19:35
Ответы с готовыми решениями:

Объяснить неожиданное поведение программы при использовании массивов и функции strcpy()
Посмотрел в отладчике,получается,что конструктор берет переменную l,вместо k и записывает ее в sym...

Ошибка компиляции при вызове функции strcpy
Подскажите пожалуйста чего он ругается

Ошибка при использовании vector (в конце, после вывода результатов выскакивает ошибка, но сам результат коректен)
Суть в следующем, мы считываем введеные значения и выводим этот массив Проблема такова что...

Ошибка при использовании gets()
Не могу понять, почему при второй итерации цикла программа выдает ошибку и закрывается при запросе...

14
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.08.2015, 19:40 2
Цитата Сообщение от _connect Посмотреть сообщение
при использовании функции возникают ошибки
Какие?
1
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
06.08.2015, 19:42 3
Не вижу ошибок. i в каком диапазоне?
1
lss
941 / 869 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
06.08.2015, 19:43 4
Вот код, никаких ошибок:
C++
1
2
3
4
5
6
7
    char *names[] = {"asdfg", "hjklqw", "wertyui", "bnmasdfg", "lkjhgfdsa", "qwertuiop"};
    char str[25];
    for (int i = 0; i < 6; ++i)
    {
        strcpy(str, names[i]);
        cout << str << endl;
    }
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
06.08.2015, 19:44 5
Цитата Сообщение от castaway Посмотреть сообщение
Не вижу ошибок. i в каком диапазоне?
И есть ли там объявленная i вообще...
0
2 / 2 / 0
Регистрация: 16.05.2013
Сообщений: 16
06.08.2015, 19:44  [ТС] 6
К той функции я доступа не имею, она вызывается и зависает, я уже отладчиком все просмотрел вроде все нормально, а при вызове проблема и все.

В таком вызове strcpy точно нет никаких нюансов?
0
21 / 22 / 7
Регистрация: 04.08.2015
Сообщений: 131
06.08.2015, 19:44 7
Скорее всего не хватает
C++
1
#include <stdio.h>
0
castaway
06.08.2015, 19:46
  #8

Не по теме:

Цитата Сообщение от gru74ik Посмотреть сообщение
И есть ли там объявленная i вообще...
Далеко не факт. Гадать не вижу смысла.

0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
06.08.2015, 19:46 9
Цитата Сообщение от Andrew Sinjagin Посмотреть сообщение
Скорее всего не хватает
C++
1
#include <stdio.h>
Скорее уж тогда
C++
1
#include <cstring>
ибо strcpy именно оттуда родом.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
06.08.2015, 19:47 10
_connect, ответь на все вопросы - получишь ответ.
1
2 / 2 / 0
Регистрация: 16.05.2013
Сообщений: 16
06.08.2015, 19:52  [ТС] 11
Я менял i просто на значения - в итоге при некоторых значениях проблемы(например в массиве из 10 строк при индексе = 3 ошибка) при некоторых нет - уже не знаю что и думать. Как я понял вроде код корректен.
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
06.08.2015, 19:54 12
Цитата Сообщение от _connect Посмотреть сообщение
Как я понял вроде код корректен.
Код корректен. Но некорректно описываешь проблему ты.
0
21 / 22 / 7
Регистрация: 04.08.2015
Сообщений: 131
06.08.2015, 20:16 13
Не по теме конечно, но

Цитата Сообщение от gru74ik Посмотреть сообщение
Скорее уж тогда
Код C++1 #include <cstring>

ибо strcpy именно оттуда родом.
Не спорю, но по опыту знаю, что по вложениям между различными заголовочными файлами очень легко сделать пару-тройку кругов, чтобы разобраться что куда вложено и что служит первоисточником
0
Эксперт С++
4985 / 3092 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
06.08.2015, 20:21 14
По опыту знаю, что с таким выделением текста вам не долго осталось на форуме.
1
Заблокирован
06.08.2015, 21:06 15
Цитата Сообщение от _connect Посмотреть сообщение
Есть некая структура, допустим Record - в ней есть поле char name[25], дальше эта структура передается прикладной функции. Когда я копирую значение из массива в это поле:
- strcpy не имеет ограничителя на число чаров, следует использовать её аналог для копирования n байт
C++
1
strncpy(Record->name, names[i], 24);
0
06.08.2015, 21:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.08.2015, 21:06
Помогаю со студенческими работами здесь

Ошибка при использовании %
(условие задачи, код и ошибки при коомпиляции на скрине) Здравствуйте, задача простая, как и ее...

Ошибка при использовании new[] / delete[]
Здравствуйте. Пишу учебную программу, моделирующую движение лифта (если кто учебник Дейтелов читал,...

Ошибка при использовании override
Здравствуйте, форумчане, столкнулся с проблемой при использовании override: есть абстрактный класс...

Ошибка при использовании kbhit
выходит по ошибке(компилируется норм) происходит это только из-за kbhit() в 48-ой строчке. не знаю...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru