ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

24.02.2006, 15:49
|
|
Познавший АНТИЧАТ
Регистрация: 21.11.2004
Сообщений: 1,137
Провел на форуме: 2487541
Репутация:
761
|
|
возвращение строки
есть функция, которая возращает строку
Код:
char* f()
{
static char str[] = "helloworld";
return str;
}
char* str = f();
cout << str << sizeof(str);
При такой функции строка выводится как надо, но sizeof(str) = 4 байта. (долго думал почему 4... только догадки)
А мне нужно от sizeof(str) получить 10 байт (строка "helloworld" = 10 байтам)
Конечно можно воспользоватся strlen, скажете вы, но этот способ мне не подходит потому-что strlen как я понял игнорирует символы типа 0x00 и тд, а мне это очень важно.
Тоесть вывод такого будет 0 (а sizeof() = 2)
Код:
char str[] = {0x00, 0x00};
cout << strlen(str);
Вообщем нужно возрвратить строки таким способом (или приобразовать её уже поле возвращения), чтобы можно было потом с ней работать также, если бы я сам назначил char str[] = "helloworld";
UPD
Я замутил так:
Код:
char* f(int &size)
{
char s1[] = "hello world";
size = sizeof(s1);
char* pResult = new char[size];
return pResult;
}
int main()
{
int size = 0;
char *p = f(size);
char str[size];
memcpy(&str, p, sizeof(str));
delete p;
cout << str <<" " << sizeof(str);
}
Проблема решена. Модератор может удалить тему :]
Последний раз редактировалось fucker"ok; 01.03.2006 в 20:18..
Причина: проблема отпала
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|