【问题标题】:Convert a comma separated string to an array in proc将逗号分隔的字符串转换为proc中的数组
【发布时间】:2015-06-15 09:06:03
【问题描述】:

我需要在 proc 中将逗号分隔的字符串转换为数组,我正在获取字符串:

while ((ch = getopt(argc, argv, "do:c")) != EOF)
{
    switch (ch) 
    {
        case 'c':
            get_order_type(optarg);

get_order_type(optarg) 是逗号分隔的字符串,例如30,31,32 我需要获取每个字符串。

【问题讨论】:

标签: c string split


【解决方案1】:

您要查找的函数是 strtok。这意味着字符串标记器。

我认为这对你有用:

  char str[] = get_order_type(optarg);
   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);
   }

无论如何,here 你有该方法的文档。

希望对你有帮助!!

【讨论】:

  • 不应该是:const char s[1] = ",";
【解决方案2】:
#define max_strln 30

#define max_str_no 20

char input[] = get_order_type(optarg);
char *str;
int i_ctr;
char arr[max_str_no ][max_strln];    

for(i_ctr = 0,str = strtok(input,","); str!= NULL; i_ctr++, str= strtok(NULL,","))
  {
    strcpy( arr[i_ctr], str);
  }

解释:

我们在“输入”变量中使用逗号分隔字符串,并通过分隔符(此处为逗号)标记该变量。 strtok 返回由分隔符分隔的字符串(这里逗号是分隔符)。 最后我们使用复制函数将该字符串复制到数组中。

【讨论】:

  • 在 str_wth_comma 变量中复制“get_order_type(optarg)”
  • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 回答问题的额外上下文将显着改善其长期价值。请edit你的答案添加一些解释。
  • 是的,它是给定问题的答案。 strtok 返回由分隔符分隔的字符串(这里逗号是分隔符)。
  • @TobySpeight : 如果你对 ans 满意请接受它
  • 最好发布一些你至少已经编译过的东西——上面的错误太多了,无法给出一个好的答案。
猜你喜欢
  • 2021-12-18
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 2011-06-12
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
相关资源
最近更新 更多