C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 带分隔符的Strtok行为大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是代码段.

#define TABLE_DELIMITER "::"
int parse_n_store ( char *line )
{

        int i = 0;
        char *p = NULL;
        CPTR sensor_number = NULL,event_catagory = NULL,sensor_type = NULL,event_state= NULL,assertion = NULL,message_number = NULL,short_text = NULL;

        for (p = strtok(line,TABLE_DELIMITER); p != NULL; p = strtok(NULL,TABLE_DELIMITER),i++ )
        {
                if ( i == 0 )
                        sensor_number=p;
                else if ( i == 1 )
                        sensor_type = p;
                else if ( i == 2 )
                        event_catagory = p;
                else if ( i == 3 )
                        event_state = p;
                else if ( i == 4 )
                        assertion = p;
                else if ( i == 5 )
                        message_number = p;
                else if ( i == 6 )
                        short_text = p;
        }

        printf ("%s %s %s %s %s %s %s\n",sensor_number,event_catagory,sensor_type,event_state,assertion,message_number,short_text);
}

这很好用.但是,当“行”参数为“前面板内存状态:检测到可纠正的ECC /其他可纠正的内存错误;传感器(70,内存)”时

输出将是

70 SENSOR_SPECIFIC MEMORY STATE_00 True 8543前面板内存状态

其中short_text变量仅包含“前面板内存状态”而不是“前面板内存状态:检测到可纠正的ECC /其他可纠正的内存错误;传感器(70,内存)”

为什么strtok虑将单个冒号作为分隔符?谁能解决这个问题.

解决方法

因为它在标准(C11)中指定:

大佬总结

以上是大佬教程为你收集整理的c – 带分隔符的Strtok行为全部内容,希望文章能够帮你解决c – 带分隔符的Strtok行为所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。