Как исправить "формат указывает тип 'char *', но аргумент имеет тип 'char **'" ошибка - PullRequest
1 голос
/ 28 апреля 2019

Я настраиваю систему Client Socket, и весь код будет создан, кроме части, ссылающейся на server_response.Я следую учебному пособию, но никто в комментариях, похоже, не имел этой проблемы.Что является причиной этой ошибки и как я могу ее исправить?

Я следовал этому руководству примерно на полпути, я столкнулся с этой ошибкой, и проблема не рассматривается в комментариях или в видео.https://www.youtube.com/watch?v=LtXEMwSG5-8

int network_socket;
network_socket = socket(AF_INET, SOCK_STREAM, 0);  

//Address structure that holds access info for socket
struct sockaddr_in server_address;
server_address.sin_family = AF_INET; //specifies family or type of address, in this case an internet based one
server_address.sin_port = htons(13001); //specifies port
server_address.sin_addr.s_addr = INADDR_ANY;

//specifies socket, address point and the size of the address we are trying to connect to
//we save it as an int as if the connection is good it will return 0 if not it will be -1
int connection_status = connect(network_socket, (struct sockaddr *) &server_address, sizeof(server_address));
//checks for any error
if(connection_status == -1){
    printf("There was an error connecting to the remote socket\n\n\n");
    return 1;
}
//checks socket for any data size 250 chars long
char* server_response[300];
recv(network_socket, &server_response, sizeof(server_response), 0);

//prints data we get back
printf("server says:%s", server_response);
//closes socket
close(network_socket);
return 0;

}

1 Ответ

2 голосов
/ 28 апреля 2019
char* server_response[300];
//  ^

Здесь не должно быть *.Это должен быть массив из 300 символов.Таким образом, sizeof(server_response) в следующей строке будет вычислять до 300, а recv() будет читать до 300 байтов из сокета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...