打印

这个C语言的函数该怎么写

[复制链接]
799|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
limee|  楼主 | 2018-12-28 16:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
每行的字符串00:00:03.870     00:00:06.106
    转换为 00:00:03,870 ---> 00:00:06,106
    一共替换3处,2个.替换为2个,
    5个空格替换为2个空格首尾加箭头 ---> 这个函数该怎么写?               

主要目的是转换下面的字幕为srt

今天会提早回家吗
00:00:07.273     00:00:09.275
不会 会晚点
00:00:10.543     00:00:13.313
各公司都要推网购
00:00:13.680     00:00:15.382
我们公司也要做
00:00:16.349     00:00:18.885
不要太勉强哦
00:00:19.986     00:00:21.121
我知道
00:00:26.926     00:00:29.662
评论
dirtwillfly 2018-12-28 20:31 回复TA
又不用脚本了? 

相关帖子

沙发
mohanwei| | 2018-12-29 12:23 | 只看该作者
while(*src)//遍历整个字符串
{
        char ch=*src++;
        if(ch=='.')
        {
                printf(",");
        }
        else if(ch==' ')
        {
                if((src[0]==' ')&&(src[1]==' ')&&(src[2]==' ')&&(src[3]==' '))//是连着的5个空格(后面跟着4个空格)
                {
                        printf("--->");
                        src += 4;
                }
                else//不是连着的5个空格
                {
                        printf(" ");
                }
        }
        else//普通字符
        {
                printf("%c",ch);
        }
}

使用特权

评论回复
板凳
tianxj01| | 2018-12-30 09:59 | 只看该作者
本帖最后由 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,完成全部替换。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

301

主题

475

帖子

0

粉丝