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

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

Войти
Регистрация
Восстановить пароль
 
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 372
23.01.2014, 23:05     Закрывается приложение при strcpy #1
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 символа.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nikolay1982
92 / 92 / 38
Регистрация: 22.01.2014
Сообщений: 310
23.01.2014, 23:06     Закрывается приложение при strcpy #2
Должно работать.
Проверьте что в pszRight.
Может отсутствует нулевой символ конца строки.
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 372
23.01.2014, 23:13  [ТС]     Закрывается приложение при strcpy #3
pszRight выдает нормальное сообщение: my_new_weapon
nikolay1982
92 / 92 / 38
Регистрация: 22.01.2014
Сообщений: 310
24.01.2014, 00:17     Закрывается приложение при strcpy #4
Так проверь ее длину перед strcpy.
Строка может иметь невидимые символы.
Или:
C++
1
strncpy( g_aszEntName[ 0 ], pszRight,31 );
pEntity
10 / 5 / 1
Регистрация: 12.12.2012
Сообщений: 372
24.01.2014, 00:28  [ТС]     Закрывается приложение при strcpy #5
Нет, я использую функцию trim. Вашу версию испробую обязательно.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
12288 / 6975 / 784
Регистрация: 27.09.2012
Сообщений: 17,286
Записей в блоге: 2
Завершенные тесты: 1
24.01.2014, 01:08     Закрывается приложение при strcpy #6
Цитата Сообщение от pEntity Посмотреть сообщение
Применять strcpy читал не безопасно, но почему, что не так ?
потому что можно данные в памяти повредить.
Цитата Сообщение от pEntity Посмотреть сообщение
pszRight выдает нормальное сообщение: my_new_weapon
у меня лишь выдает "нет декларации «pszRight» в этой области видимости"
И что Вы там и как написали мы без понятия
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 04:13     Закрывается приложение при strcpy
Еще ссылки по теме:

Как установить конец строки при своей реализации функции strcpy()? C++
Быстро закрывается приложение при отладке в VS2015 C++
Закрывается консольное приложение C++
Почему при запуске программы консоль (среда Eclipse C++) сразу закрывается? C++
Объяснить неожиданное поведение программы при использовании массивов и функции strcpy() C++

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

Или воспользуйтесь поиском по форуму:
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6234 / 2963 / 288
Регистрация: 04.12.2011
Сообщений: 7,910
Записей в блоге: 3
24.01.2014, 04:13     Закрывается приложение при strcpy #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;
}
Yandex
Объявления
24.01.2014, 04:13     Закрывается приложение при strcpy
Ответ Создать тему
Опции темы

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