我有一个这样的文本文件:
/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编程的新手
答案 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);
}