Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - strcpy_s, strcat, strlen вызывают Access violation

Ответить
Настройки темы
C/C++ - strcpy_s, strcat, strlen вызывают Access violation

Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25


Конфигурация

Профиль | Отправить PM | Цитировать


strcpy_s, strcat, strlen вызывают Access violation. Вот код:
Код: Выделить весь код
LPSTR readedtext="";
strcpy_s(readedtext,strlen(readedtext)+strlen(pszOutput),pszOutput);
pszOutput мы получаем из результатов работы функции.
В чем проблема?

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 14:25, 02-04-2010

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


Цитата crashtuak:
pszOutput мы получаем из результатов работы функции. »
А сам этот код где расположен?
Может функция пытается получить результат, который она еще не сформировала?

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 14:41, 02-04-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Нет, результат уже есть, в дебагере смотрел, все строки в наличии.
Для ясности предоставлю код программы:
Код: Выделить весь код
#include "stdafx.h"
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
	LPSTR testt="";
	LPSTR testt2="qwerty";
	strcpy_s(testt,strlen(testt2)+strlen(testt),testt2);
	return 0;
}
Результат: Access violation.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Последний раз редактировалось crashtuak, 02-04-2010 в 17:04.


Отправлено: 16:42, 02-04-2010 | #3


Аватара для Drongo

Будем жить, Маэстро...


Сообщения: 6694
Благодарности: 1393

Профиль | Сайт | Отправить PM | Цитировать


crashtuak, заголовочный файл #include <cstring.h> почему не подключаешь? А так не прокатит?

Код: Выделить весь код
#include <windows.h>
#include <cstring.h>
#include <iostream.h>
int main()
{
  char testt[30]="";
  char testt2[]="qwerty";

  strcpy(testt, testt2);
  std::cout<<"Test = "<<testt<<endl;
  int z;
  std::cin>>z;

  return 0;
}

-------
Правильная постановка вопроса свидетельствует о некотором знакомстве с делом.
3нание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нём сведения.
[Quick Killer 3.0 Final [OSZone.net]] | [Quick Killer 3.0 Final [SafeZone.cc]] | [Парсер логов Gmer] | [Парсер логов AVZ]

http://tools.oszone.net/Drongo/Userbar/SafeZone_cc.gif

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:26, 02-04-2010 | #4


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Drongo, твой код работает, у меня все проблемы из-за LPSTR наверно были, но мне и char пойдет. Но как оказалось, проблема у меня более глобального характера, и без полного кода никак. Вскоре я его выложу.

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 19:34, 02-04-2010 | #5

pva pva вне форума

Аватара для pva

Ветеран


Сообщения: 1180
Благодарности: 279

Профиль | Отправить PM | Цитировать


использую описание функции по ссылке:
http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx
Цитата crashtuak:
int _tmain(int argc, _TCHAR* argv[]) { LPSTR testt=""; LPSTR testt2="qwerty"; strcpy_s(testt,strlen(testt2)+strlen(testt),testt2); return 0; } »
Код: Выделить весь код
код
strcpy_s(testt,strlen(testt2)+strlen(testt),testt2);
должен запихать в testt, под который выделен (формально) один символ, и приравнен нулю
strlen(testt2)+strlen(testt) символов из строки testt2. Случись такое в моей голове, я бы тоже выдал access violation.
И возможно красивые мультики увидел бы...
если хочешь соединить две строки, то нужно:
1. выделить буфер необходимого размера
2. следить за переполнением буфера
Код: Выделить весь код
unsigned const dest_size = 100;
// я невнимательно прочитал про размер - учитывает он конечный ноль или нет. Написал как будто учитывает.
TCHAR testt[dest_size] = "preamble+"; // хотя можно и из динамической памяти LPSTR testt = new char[dest_size];
LPSTR testt2 = "qwerty";
strcpy_s(testt + strlen(testt), min(dest_size - strlen(testt1), strlen(testt2)+1 /*для завершающего 0*/), testt2);
// если выделял динамически, то delete [] testt;

Последний раз редактировалось pva, 03-04-2010 в 19:27. Причина: ум за разум

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:15, 03-04-2010 | #6


Аватара для crashtuak

Старожил


Сообщения: 467
Благодарности: 25

Профиль | Отправить PM | Цитировать


Цитата pva:
Случись такое в моей голове, я бы тоже выдал access violation. И возможно красивые мультики увидел бы... »

Понял, где ошибки, буду править.
pva, пока вы не указали на строку, я и не подумал, какой бред написал, у меня в самого в голове access violation из-за своей тупости полчился

-------
Мне надо не так много "Полезных сообщений", чтоб сровнять их количество с моими постами :).


Отправлено: 22:05, 03-04-2010 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - strcpy_s, strcat, strlen вызывают Access violation

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Нужно убедиться, что не вирусы вызывают BSOD doananh Лечение систем от вредоносных программ 19 02-04-2009 15:53
Unable to access the computer. Access is denied Maf1a Microsoft Windows NT/2000/2003 2 13-07-2007 15:42
[решено] Способ копирования защиненного файла (Когда - File sharing violation) RVGroup Microsoft Windows 2000/XP 3 25-10-2006 11:21
DBase | Ошибка Key violation, базы Paradox khvalera Программирование и базы данных 1 11-08-2005 14:46
Ошибка Segmentation Violation vvadim Microsoft Windows 95/98/Me (архив) 2 12-11-2004 10:56




 
Переход