我尝试过使用strtok功能,但我不知道如何使用它
这是我从网上读到的代码
FILE *ptr = fopen("testdoc.txt", "r");
char nums[100];
fgets(nums,100,ptr);
const char s[2] = ",";
char *token;
token =strtok (nums, s);
while( token != NULL )
{
printf( " %s\n", token );
token = strtok(NULL, s);
}
为什么我们在最后一行有token = strtok(NULL,s)?以及如何将令牌获得的数字存储到数组中? 非常感谢,请详细解释
答案 0 :(得分:1)
来自strtok参考
在第一次调用上,函数需要一个C字符串作为str的参数,其第一个字符用作扫描标记的起始位置。在后续调用中,函数需要一个空指针,并在最后一个令牌结束后立即使用该位置作为扫描的新起始位置。
那是strtok
在内部存储位置。
获取获得的令牌数量非常简单。没有奇迹。只需使用counter
并在循环中递增它。
答案 1 :(得分:0)
strtok更改其第一个参数(char * / char []的内容)。当它从char数组中找到第一个seperator(第二个参数)时,数组中的seperator将更改为'\ 0',并返回char *。在此之后,当你想获得第二个段时,你应该使用NULL作为第一个参数(strtok已经拥有数组,不要删除它们),并且strtok找到下一个分隔符,将其更改为\ 0,并返回此段char *(到此seg的第一个字符)。
要回答第二个问题,请将char *更改为int:
int i = atoi(strtok(...));