Использование strtok для замены частей строки из входного файла C

Так что у меня есть файл, который просто "кошка собака куриная крыса". Я пытаюсь загрузить его в строку и изменить одно из слов. я имею

int main(){

    FILE *ifp;
    char *entry;
    char *string;
    char *token;

    ifp=fopen("/home/names.txt", "r");

    entry=malloc(200*sizeof(char));
    while(fgets(entry,75,ifp)){ 
    }

    printf("%s\n",entry);
    token=strtok(entry," ");

    while(token!=NULL){

        if(token=="dog")
            string="bird";

        string=token;
        printf("%s ",string);
        token=strtok(NULL," "); 
    }   
}

Однако, когда я пытаюсь это сделать, слово "собака" не заменяется словом "птица". Что я делаю неправильно?

1 ответ

Решение

Теперь это изменит исходную строку и сохранит ее в другом массиве символов -

char string[100];                // in your original code allocate memory to pointer string
token=strtok(entry," ");
size_t n;
while(token!=NULL){
  n=strlen(string);                      // calculate string length 
  if(strcmp(token,"dog")==0)             // if "dog" found
     sprintf(&string[n],"bird ");        // add "bird " at that position
  else
     sprintf(&string[n],"%s ",token);    //if doesn't add token 
  token=strtok(NULL," ");
}

примечание - не сравнивайте строки как это -

    if(token=="dog")

Использовать функцию strcmp от <string.h>,

Другие вопросы по тегам