【发布时间】:2015-11-01 18:42:44
【问题描述】:
C 中的新手,对如何使用 strtok 同时处理多个字符串感到很困惑,举个简单的例子,我想使用 strtok 提取数字并进行比较。
#include <stdio.h>
#include <string.h>
int main()
{
char s1[100]="11.54";
char s2[100]="12.55";
const char tok[2]=".";
char* token1=strtok(s1,tok);
char* token2=strtok(s2,tok);
while(token1 !=NULL && token2 !=NULL){
int temp=strcmp(token1,token2);
if(temp==0){
token1=strtok(NULL,tok);
token2=strtok(NULL,tok);
}
else if(temp<0){
printf("%d\n",-1);
return;
}
else{
printf("%d\n",1);
return;
}
}
if(token1 !=NULL){
printf("%d\n",1);
return;
}
if(token2 !=NULL){
printf("%d\n",-1);
return;
}
printf("%d\n",0);
return 0;
}
但是当我使用 strtok 时,strtok(NULL,token) 将指向当前字符串,并且会像:11->12>55->NULL 并跳过 54
我该如何处理这种情况?谢谢!!
【问题讨论】:
-
strsep也是一个不错的选择,如果你有的话。 -
作为 melpomene -
strtok()一次只能处理一个字符串。或者,您可以从一个字符串中提取所需的所有信息,然后处理另一个字符串。 -
如上所述,strtok() 可以一次处理一个字符串。它基于“。”进行标记。 .所以起初,你的令牌是 token1:11 , token2:12 是不相等的。它打印 -1 并从 while 返回。