C程序 - 如何在strtok()中获得第二次出现?

时间:2016-11-08 04:34:05

标签: c

我有一个这样的文本文件:

/www/test.php = 24323

strtok(myfile," = ")它只打印第一次出现的/www/test.php,如何打印第二次出现24323

新问题:

char * name;
char *def_size;
name = strtok (line," = ");
def_size = strtok(NULL, " = ");
stat(name, &st);
if (st.st_size != def_size) {
    printf("File size doesn't match\n");
}

当我编译它时,我得到:

  

test.c:在函数'main'中:test.c:23:24:警告:比较之间   指针和整数            if(st.st_size!= def_size){                           ^〜

我该如何解决这个问题?对不起,我是C编程的新手

2 个答案:

答案 0 :(得分:0)

您将strtok的第一个参数更改为NULL。它看起来像这样:

strtok(NULL, " = ");

当然,您仍然需要保持对strtok(myfile, " = ");的通话,但随后对strtok NULL作为第一个参数的任何调用将从之前指定的最后一个点继续字符串。

示例:

printf("%s", strtok(myfile, " = ");     // prints "/www/test.php"
printf("%s", strtok(NULL, " = ");       // prints "24323"

您也无法将字符串与整数进行比较。你需要像atoi这样使用:

if (st.st_size != atoi(def_size) {
    printf("File size doesn't match\n");
}

答案 1 :(得分:-1)

你必须使用循环来打印每个部分。 以下是打印所有令牌

的代码
#include <string.h>
#include <stdio.h>

int main()
{
   char str[80] = "/www/test.php = 24323";
   const char s[2] = "=";
   char *token;

   /* get the first token */
   token = strtok(str, s);

   /* walk through other tokens */
   while( token != NULL ) 
   {
      printf( " %s\n", token );

      token = strtok(NULL, s);
   }

   return(0);
}