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

21.11.2008, 03:38
|
|
Постоянный
Регистрация: 13.02.2007
Сообщений: 406
Провел на форуме: 2706059
Репутация:
206
|
|
нужно прочесть данные из реестра, тип данных REG_SZ, компилиться без ошибок, но в буфере(Reget) где должны быть данные пусто
часть кода
Код:
HKEY hKey;
RegOpenKeyExA(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfeaces\\{2BF69BB5-EB8E-48CE-8D1F-FA2CCF27B}", 0, KEY_READ, &hKey);
char Reget[64];
DWORD RegetPath = sizeof(Reget);
DWORD type = REG_SZ;
RegQueryValueExA(hKey, "DhcpIPAddress", NULL, &type, (PBYTE)Reget, &RegetPath);
RegCloseKey(hKey);
printf(Reget);
|
|
|

21.11.2008, 10:38
|
|
Познающий
Регистрация: 14.11.2007
Сообщений: 68
Провел на форуме: 113757
Репутация:
8
|
|
Сообщение от ToniKapuchon
void func(int p=1;int p1=2)
{
}
Не уверен!
Сейчас проверим
|
|
|

21.11.2008, 11:04
|
|
Познающий
Регистрация: 12.12.2007
Сообщений: 81
Провел на форуме: 589075
Репутация:
53
|
|
Svarog попробуй вместо &type влепить 0 , у меня работало так
|
|
|

21.11.2008, 12:52
|
|
Познающий
Регистрация: 14.11.2007
Сообщений: 68
Провел на форуме: 113757
Репутация:
8
|
|
Сообщение от ToniKapuchon
void func(int p=1;int p1=2)
{
}
в компосере непашет такого вида конструкция нехочет компилить
|
|
|

21.11.2008, 15:48
|
|
Познающий
Регистрация: 07.09.2008
Сообщений: 79
Провел на форуме: 272452
Репутация:
10
|
|
Сообщение от Diablo@Dragon
Как мне сделать функцию с параметрами но при этом если параметры незадавать выполнялись параметры по умолчанию
Код:
int main(void)
{
func(NULL);
return 0;
}
void func(int *n)
{
if(n == NULL)
{
puts("аргумент не задан !");
}
else
{
printf("аргумент = %d\n",*n);
}
}
Последний раз редактировалось xismyname; 21.11.2008 в 15:50..
|
|
|

21.11.2008, 16:19
|
|
Участник форума
Регистрация: 20.12.2007
Сообщений: 295
Провел на форуме: 1777055
Репутация:
347
|
|
Сообщение от Smapt
Если я правильно понимаю после очистки мамяти будет 31 00 32 00, я прав? Мне же необходимо от "лишнего" байта избавится, т.е. структура должна быть размером именно 3 байта.
Для того чтобы включить выравнивание по границе байта нужно сделать
#pragma pack(push, 1)
тут структура
#pragma pack(pop)
|
|
|

21.11.2008, 17:05
|
|
Познающий
Регистрация: 14.11.2007
Сообщений: 68
Провел на форуме: 113757
Репутация:
8
|
|
Сообщение от xismyname
Код:
int main(void)
{
func(NULL);
return 0;
}
void func(int *n)
{
if(n == NULL)
{
puts("аргумент не задан !");
}
else
{
printf("аргумент = %d\n",*n);
}
}
ну всёбы хорошо только вот это под микроконтроллер нада и нужно чтобы работало таким образом
Параметры по Умолчанию
Часто в самом общем случае функции требуется больше параметров, чем в самом простом и более употребительном случае. Например, в библиотеке потоков есть функция hex(), порождающая строку с шестнадцатиричным представлением целого. Второй параметр используется для задания числа символов для представления первого параметра. Если число символов слишком мало для представления целого, происходит усечение, если оно слишком велико, то строка дополняется пробелами. Часто программист не заботится о числе символов, необходимых для представления целого, поскольку символов достаточно. Поэтому для нуля в качестве второго параметра определено значение "использовать столько символов, сколько нужно". Чтобы избежать засорения программы вызовами вроде hex(i,0), функция описывается так:
extern char* hex(long, int =0);
Инициализатор второго параметра является параметром по умолчанию. То есть, если в вызове дан только один параметр, в качестве второго используется параметр по умолчанию.
Например:
cout << "**" << hex(31) << hex(32,3) << "**";
интерпретируется как
cout << "**" << hex(31,0) << hex(32,3) << "**";
и напечатает:
** 1f 20**
Параметр по умолчанию проходит проверку типа во время описания функции и вычисляется во время ее вызова. Задавать параметр по умолчанию возможно только для последних параметров, поэтому
int f(int, int =0, char* =0); // ok
int g(int =0, int =0, char*); // ошибка
int f(int =0, int, char* =0); // ошибка
Заметьте, что в этом контексте пробел между * и = является существенным (*= является операцией присваивания):
int nasty(char*=0); // синтаксическая ошибка
|
|
|

21.11.2008, 17:09
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
Можно ли играть одновременно 2 разные частоты через пс спикер? типа "полифония". Kernel32 - Beep()
|
|
|

21.11.2008, 18:11
|
|
Познающий
Регистрация: 31.08.2006
Сообщений: 77
Провел на форуме: 384956
Репутация:
33
|
|
Хочу задать несколько вопросов 
В чем я буду писать на си ? В каком-то специальном редакторе или можно в блокноте как html ? И нужна ли какая-то поддерживающая программа ?
И еще, си и си++ это одно и то же ? Мне просто говорили что си такого нет, есть си++
Заранее спасибо за разъяснение сих вопросов))))
|
|
|

21.11.2008, 18:22
|
|
Участник форума
Регистрация: 07.07.2008
Сообщений: 161
Провел на форуме: 1027635
Репутация:
234
|
|
Писать можно в чём угодно, хоть в блокноте, но в какой-нибудь IDE это делать будет в сто раз удобно. Там и компилятор есть, и отладчик, и ещё куча всякой нужной фигни. Например, Visual Studio.
С это старый процедурный язык, С++ "новый" объектно-ориентированный который по большей части совместим с С.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|