не может конвертировать «char **» в «char *»

У меня есть индекс для сетевого интерфейса, из которого я получил пакет (то есть 2), и мне нужно найти имя интерфейса, который должен вернуть "eth0", я использую if_indextoname().

Я не очень знаком с C ++ в Ubuntu, но мой код выдает ошибку:

не может конвертировать char** в char* для аргумента 2 в char* if_indextoname(unsigned int, char*)

Может кто-нибудь помочь мне это исправить?

#include <net/if.h>
#include <iostream>

int main()
{
unsigned int ifindex = 2;
char *ifname[10];
std::cout << if_indextoname(ifindex, ifname);
std::cout << ifname << std::endl;
}

0

Решение

char *ifname[10]; объявляет 10 символьных указателей.

Я думаю, что вам нужно, это указатель на символ.
char* ifname = new char[IF_NAMESIZE+1] должен решить вашу проблему.

В качестве альтернативы, вы можете просто выделить автоматический буфер символов, если вы не хотите передавать его другим функциям.

char ifname[IF_NAMESIZE+1]

2

Другие решения


По вопросам рекламы [email protected]