本帖最后由 tianxj01 于 2018-12-30 10:09 编辑
真实执行时候,用printf函数非常占用系统资源的,可以用直接替代法,
首先,你必须在ASCII串和中文串当中提取出ASCII串,这个可以根据前面2个ASCII字符大小'0'-'2'=48----50,这个范围,第二个是0-9字符(48----57)范围,可以确认是合法ASCII字符串,这个方法比较严格。当中文字符串中文如果是标准GB2312的话,只需要判断第一个是字符0-2,就完全可以了。
接着,用字符串长度作为循环指令的循环数,你这个其实挺简单,长度都是固定的,可以用for,也可以用while。对字符串数组,进行遍历替换。
u8 ii=0;
if(CHAR_tmp=='.'){CHAR_tmp=',';}
if(CHAR_tmp==' '){CHAR_tmp='-';ii++;}
if(CHAR_tmp=='-'&&ii==3){CHAR_tmp='>';}
这个是针对3空格替换为-->的过程。
如果,你需要对被置换的空格和替换进去的-->数目不一样,那么你得先确定多余的空格是进行缩减还是不替换,处理方法是不一样的。
如果只是简单的不替换,留着,那么你只需要在ii计数器上面动脑筋,对ii=0时候,不作处理,对ii=1和2,替换为-,对ii=3的替换为>,就完成了。
如果多余空格是进行缩减的,那么ii=0-2时,用我上面代码,然后在ii=3开始,进行字符数组向前自传输跨距为2,最后字符串长度-2,完成全部替换。
|
又不用脚本了?