c/c++语言开发共享解析一个字符串

我有一个格式为“ABCDEFG,12:34:56:78:90:11”的字符串。 我想将这两个用逗号分隔的值分成两个不同的字符串。 我如何使用c语言在gcc中这样做。

    一种可能性是这样的:

    char first[20], second[20]; scanf("%19[^,], %19[^n]", first, second); 

    这么多人都在暗示……为什么? strtok是编程的石器时代的遗留物,仅适用于20线电力公司!

    每次调用strtok都会通过在该调用返回的标记之后插入空字符来修改strToken。 […] [F] unction使用静态变量将字符串解析为标记。 […]交错调用此函数极有可能产生数据损坏和不准确的结果。

    像Jerry Coffin的回答一样 , scanf是一个更好的选择。 或者,您可以手动执行:使用strchr查找分隔符,然后将部件复制到单独的缓冲区。

     char str[] = "ABCDEFG,12:34:56:78:90:11"; //[1] char *first = strtok(str, ","); //[2] char *second = strtok(NULL, ""); //[3] 

      [1] ABCDEFG,12:34:56:78:90:11     [2] ABCDEFG  012:34:56:78:90:11      逗号替换为空字符,首先指向'A'   [3]后续调用`strtok`作为第一个参数有NULL`。      您可以更改分隔符。  注意:你不能使用“字符串文字”,因为`strtok`修改了字符串。 

    您可以使用strtok来指定分隔符并为您生成标记。

    你可以使用strtok

    来自cppreference.com的示例:

      char str[] = "now # is the time for all # good men to come to the # aid of their country"; char delims[] = "#"; char *result = NULL; result = strtok( str, delims ); while( result != NULL ) { printf( "result is "%s"n", result ); result = strtok( NULL, delims ); } 

    尝试使用以下正则表达式,它会找到任何字符az AZ后跟一个“,”

    “[AZ] ,”如果您还需要小写字母,请尝试“[a-zA-Z] ,”

    如果您需要先搜索第二部分,可以尝试以下操作

    ”,[0-9] {2}:[0-9] {2}:[0-9] {2}:[0-9] {2}:[0-9] {2}:[O- 9] {2}”

    有关如何在https://ddj.com/184404797上使用REGEX的示例

    谢谢,V $ h3r

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

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

      ctvol管理联系方式QQ:251552304

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

      (0)
      上一篇 2021年2月4日
      下一篇 2021年2月4日

      精彩推荐