c/c++语言开发共享将字符串拆分为C中的整数数组

我在一个C应用程序中有一个逗号分隔的字符串,我正在将它拆分为一个整数值数组。 该字符串可以包含任意数量的逗号分隔值,因此我也没有数组的初始大小。

例如

"345,3345,35,75,52,386" 

并喜欢做类似……

 int parsedArray[] = parseString("345,3345,35,75,52,386"); 

在java或c#中这将是轻而易举的事情但是我认为在谈到C时我有点超出我的深度。有关如何实现这一点的想法?

    在C中无法使用post中隐含的签名function,因为函数无法返回动态大小的数组。 这里有两种选择:

    第一种方法将数组的大小限制为由调用者建立的某个数字; 第二种方法需要在完成后释放数组。

    第一种方法后面的函数如下所示:

     void parseString(int data[], size_t maxSize); 

    第二种方法后面的函数如下所示:

     int *parseString(size_t *actualSize); 

    或者像这样:

     void parseString(int ** data, size_t *actualSize); 

    第二种情况可用于组合这两种方法,尽管API会变得不那么直观。

    至于解析本身,存在许多选项。 其中一个“轻量级”选项是使用strtol ,如下所示:

     char *end = str; while(*end) { int n = strtol(str, &end, 10); printf("%dn", n); while (*end == ',') { end++; } str = end; } 

    演示。

    p是指向字符串的指针

     int parsedArray[1024]; int nb = 0; while (nb < sizeof(parsedArray) && *p) { parsedArray[nb++] = strtol(p, &p, 10); if (*p != ',') break; p++; /* skip, */ } 

    nb是解析int的数量

    我将查看C函数strtok()并使用它来遍历您的字符串并提取每个元素。 使用atoi()将每个元素解析为整数。

     #include  #include  #include  int main () { char str[] = "7,4200,4450, 500,1600, 500,550,600"; // Returns first token char *token = strtok(str, ","); int size=atoi(token); int signal[size]; int i=0; // Keep printing tokens while one of the // delimiters present in str[]. while (token != NULL) { printf("%sn", token); token = strtok(NULL, ","); if(token !=NULL){ signal[i]=atoi(token); printf("%d --", signal[i]); i=i+1; } } return 0; } 

      以上就是c/c++开发分享将字符串拆分为C中的整数数组相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/523212.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐