Устаревшая ошибка преобразования

0

У меня есть следующий фрагмент кода:

#include<stdio.h>    //scanf , printf
#include<string.h>  //strtok
#include<stdlib.h>  //realloc
#include<sys/socket.h>  //socket
#include<netinet/in.h> //sockaddr_in
#include<arpa/inet.h>   //getsockname
#include<netdb.h>   //hostent
#include<unistd.h>  //close

int get_whatthe_data(char * , char **);
int hostname_to_ip(char * , char *);
int whatthe_query(char * , char * , char **);
char *str_replace(char *search , char *replace , char *subject );

int main(int argc , char *argv[])
{
    char domain[100] , *data = NULL;

    printf("Enter domain name : ");
    scanf("%s" , domain);

    get_whatthe_data(domain , &data);

    return 0;
}

int get_whatthe_data(char *domain , char **data)
{
    char ext[1024] , *pch , *response = NULL , *response_2 = NULL , *wch , *dt;

    domain = str_replace("http://" , "" , domain);
    domain = str_replace("www." , "" , domain);

    dt = strdup(domain);
    if(dt == NULL)
        {
            printf("strdup failed");
        }
    pch = (char*)strtok(dt , ".");
    while(pch != NULL)
        {
            strcpy(ext , pch);
            pch = strtok(NULL , ".");
        }

и получить следующие ошибки:

main.cpp: In function 'int get_whatthe_data(char*, char**)':
main.cpp:37:46: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
  domain = str_replace("http://" , "" , domain);

и так далее.

Может кто-нибудь помочь мне с этой проблемой. Благодарю.

Теги:
string
sockets

1 ответ

6

Предупреждение сообщает вам, что вы назначаете строковые литералы, такие как "http://" на char*. Поскольку вы не можете изменить строковый литерал, он должен быть привязан только к указателю на const char. Поэтому измените вашу подпись str_replace чтобы принять const char*.

Это упрощенная версия проблемы:

char* word = "hello";       // BAD
const char* word = "hello"; // GOOD
  • 0
    Огромное спасибо. Это сработало. Я очень новичок в программировании. Ценю твою помощь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню