В функции check
буфер является указателем на char
, а его размер составляет 8
В буферах main
предоставлен массив из 33 элементов, а его размер равен 33
.
Чтобы получить длину строки C, используйте функцию strlen
.
Как правило, нет способа получить размер массива, на который ссылается указатель. Вам нужно передать размер как другой параметр.
В вашем примере:
void check(char *buf, size_t size)
{
printf("%zu \n", size);
}
int main(int argc, char *argv[])
{
char buffer[] = "\x64\x49\x00\x55\x33\x33\x33\x64\x49\x00\x00\x00\x55\x33\x33\x33\x64\x49\x00\x00\x00\x55\x33\x33\x64\x49\x00\x00\x00\x55\x33\x33";
printf("%d\n", sizeof(buffer)); // **output 33**
check(buffer, sizeof(buffer));
}