Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 393
#1

Закрывается приложение при strcpy - C++

23.01.2014, 23:05. Просмотров 268. Ответов 6
Метки нет (Все метки)

C++
1
2
char g_aszEntName[ 32 ][ 32 ]; 
strcpy( g_aszEntName[ 0 ], pszRight );
char pszRight[32] - хранит строку в 21 символ.

Добавлено через 5 минут
А вот _snprintf_s(g_aszEntName[0], 32, "%s", pszRight);

Работает. Применять strcpy читал не безопасно, но почему, что не так ? Ведь строка моя которую я копирую не больше 32 символа.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2014, 23:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Закрывается приложение при strcpy (C++):

Быстро закрывается приложение при отладке в VS2015 - C++
Здравствуйте! Суть проблемы: Буквально в пятницу все работало как надо, никаких нареканий не было, сегодня же включив компутер, загрузив...

Закрывается приложение - C++
Столкнулся с неприятной ситуацией. wxDev закрывается при создании нового или открытии ранее созданного проекта без уведомления об ошибке....

Закрывается консольное приложение - C++
независимо вводил ли я Добавлено через 14 секунд getch(); cin.get(); system("pause"); return 0; Добавлено через 25 секунд...

Ошибка при использовании strcpy - C++
Здравствуйте, возникла такая проблема Объявляю массив char * char *names = {"asdfg", "hjklqw", "wertyui", "bnmasdfg",...

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

Как установить конец строки при своей реализации функции strcpy()? - C++
Доброго времени суток, попробовал сам реализовать функцию strcpy(). Программа работоспособная, но интересует один момент. Это рабочий...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nikolay1982
93 / 93 / 38
Регистрация: 22.01.2014
Сообщений: 316
23.01.2014, 23:06 #2
Должно работать.
Проверьте что в pszRight.
Может отсутствует нулевой символ конца строки.
0
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 393
23.01.2014, 23:13  [ТС] #3
pszRight выдает нормальное сообщение: my_new_weapon
0
nikolay1982
93 / 93 / 38
Регистрация: 22.01.2014
Сообщений: 316
24.01.2014, 00:17 #4
Так проверь ее длину перед strcpy.
Строка может иметь невидимые символы.
Или:
C++
1
strncpy( g_aszEntName[ 0 ], pszRight,31 );
0
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 393
24.01.2014, 00:28  [ТС] #5
Нет, я использую функцию trim. Вашу версию испробую обязательно.
0
Croessmah
Эксперт CЭксперт С++
13231 / 7503 / 846
Регистрация: 27.09.2012
Сообщений: 18,428
Записей в блоге: 3
Завершенные тесты: 1
24.01.2014, 01:08 #6
Цитата Сообщение от pEntity Посмотреть сообщение
Применять strcpy читал не безопасно, но почему, что не так ?
потому что можно данные в памяти повредить.
Цитата Сообщение от pEntity Посмотреть сообщение
pszRight выдает нормальное сообщение: my_new_weapon
у меня лишь выдает "нет декларации «pszRight» в этой области видимости"
И что Вы там и как написали мы без понятия
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6472 / 3120 / 306
Регистрация: 04.12.2011
Сообщений: 8,594
Записей в блоге: 4
24.01.2014, 04:13 #7
Можно так сделать:
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
#include <iostream>
#include <windows.h>
 
using namespace std;
 
int main(){
char psrRight[32] = "my_new_weapon";
char cstr_1D[32];//1D массив то есть строка
 
strcpy(&cstr_1D[0], psrRight);//копируем
cout<<cstr_1D<<endl;//my_new_weapon
 
typedef char cstr_rrr[32];//чтобы облегчить запись, ведь нет однозначности у [][] в этом случае при обращении
//самому будет трудно понять имеете ли вы ввиду символ строки или строку
 
cstr_rrr g_aszEntName[32];//массив строк
 
strcpy(g_aszEntName[0], psrRight);//копируем
cout<<g_aszEntName[0]<<endl;//my_new_weapon
 
cout<<endl;
system("pause");
return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 04:13
Привет! Вот еще темы с ответами:

При ENTER закрывается прога - C++
Интересует как заблокировать кнопку ENTER...в label1 ...при нажатии ентер происходит выход из программы ...а нужно что-бы было аналогично к...

Программа закрывается при нажатии Enter - C++
Работаю в Visual studio 2010 Exspress C++. Написал несколько простых программ. При запуске программ, после компиляции, в Visual, они...

консольное приложение (при запуске приложение открывалось на весь экран) - C++
Как сделать, чтобы при запуске приложение открывалось на весь экран?

Почему при запуске программы консоль (среда Eclipse C++) сразу закрывается? - C++
Привет всем :P Раньше изучал С++ в Visual Studio , теперь в силу смены ПК на ноут( Asus eee pc 701 4g ) перешел на Eclipse C++. Подскажите...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.01.2014, 04:13
Ответ Создать тему
Опции темы

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