【问题标题】:i need to read a line of comma seperated integers from a textfile and store them into an array我需要从文本文件中读取一行逗号分隔的整数并将它们存储到一个数组中
【发布时间】:2013-11-30 11:04:37
【问题描述】:

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

【问题讨论】:

    标签: c


    【解决方案1】:

    来自strtok参考

    第一次调用时,该函数需要一个 C 字符串作为 str 的参数,其第一个字符用作扫描标记的起始位置。在后续调用中,该函数需要一个空指针,并使用最后一个标记结束后的位置作为新的扫描起始位置。

    strtok在内部存储位置。

    获取获得令牌的数量非常简单。没有奇迹。只需使用 counter 并在循环中递增它。

    【讨论】:

      【解决方案2】:

      strtok 改变了它的第一个参数(char*/char[] 的内容)。当它从 char 数组中找到第一个分隔符(第二个参数)时,将数组中的分隔符更改为 '\0',并返回一个 char*。在此之后,当你想得到第二个段时,你应该使用 NULL 作为第一个参数(strtok 已经保存了数组,不要删除它们),strtok 找到下一个分隔符,将其更改为 \0,并返回此段char*(到此段的第一个字符)。


      对于第二个问题,将 char* 更改为 int:

      int i = atoi(strtok(...));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-25
        • 1970-01-01
        • 1970-01-01
        • 2021-06-09
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        相关资源
        最近更新 更多