使用strtok从输入文件C替换字符串的一部分

时间:2015-10-24 16:01:50

标签: c string strtok

所以我有一个简单的文件"猫狗鸡老鼠"。我试图将其加载到字符串中并更改其中一个单词。我有

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," "); 
    }   
}

然而,当我尝试这个时,它并没有取代“#34; dog"与#34;鸟"。我做错了什么?

1 个答案:

答案 0 :(得分:0)

现在将修改原始字符串并将其存储在不同的char数组中 -

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>函数。