我需要从文本文件中读取一行逗号分隔的整数并将它们存储到数组中

时间:2013-11-30 11:04:38

标签: c

我尝试过使用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)?以及如何将令牌获得的数字存储到数组中? 非常感谢,请详细解释

2 个答案:

答案 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(...));