c语言英文课程带字幕,C语言实现中英文字幕合并
以下程序实现将一个中文字幕和一个英文字幕合并成一个中英字幕。
1.[代码][C/C++]代码
#include
#include
#include
#define SUBFORM ".srt*"
long FileRow(char *filepath) /*读取文件行数*/
{
FILE *fp;
long row_count = 0;
char c;
if((fp = fopen(filepath, "r")) == NULL)
{
perror("Can't open!");
exit(1);
}
while(!feof(fp))
{
if(c = fgetc(fp) == '\n')
row_count++;
}
fclose(fp);
return row_count;
}
void chs_eng(char *filepath_eng, char *filepath_chs)
{
char **engsub; /*按时间段存取所有英文字幕*/
char *chs_time_buf; /*存取每一行的中文时间*/
char *chs_str_buf; /*存取每一行的中文字幕*/
FILE *fp_eng, *fp_chs, *fp_new;
char *buf; /*每一行数据缓存*/
char *filepath_new;
int index = 0, englen = 0;
long row_count = 0;
if((fp_eng = fopen(filepath_eng, "r")) == NULL)
{
perror("Faile to popen\n");
exit(1);
}
if((fp_chs = fopen(filepath_chs, "r")) == NULL)
{
perror("Faile to popen\n");
exit(1);
}
filepath_new = (char *)calloc(strlen(filepath_chs) + 5, sizeof(char));
strcpy(filepath_new, filepath_chs);
strcat(filepath_new, "*");
if(strstr(filepath_new, SUBFORM) == false)
{
perror("Subfile type wrong!");
exit(1);
}
*strstr(filepath_new, SUBFORM) = '\0';
strcat(filepath_new, "_eng");
strcat(filepath_new, SUBFORM);
*(filepath_new + strlen(filepath_new) - 1) = '\0';
if((fp_new = fopen(filepath_new, "wb+")) == NULL)
{
perror("Faile to popen\n");
exit(1);
}
if(FileRow(filepath_eng) > FileRow(filepath_chs)) row_count = FileRow(filepath_eng);
else row_count = FileRow(filepath_chs);
engsub = (char **)calloc(row_count / 3, sizeof(char *));
chs_time_buf = (char *)calloc(128, sizeof(char));
chs_str_buf = (char *)calloc(128, sizeof(char));
buf = (char *)calloc(128, sizeof(char));
while(!feof(fp_eng)) /*遍历英文字幕文件,存取数据*/
{
fgets(buf, 128, fp_eng);
if(strstr(buf, "-->") != NULL)
{
engsub[index] = (char *)calloc(128, sizeof(char));
while(!feof(fp_eng))
{
fgets(buf, 128, fp_eng);
if(strcmp(buf, "\n") == 0) break;
strcat(engsub[index], buf);
}
index++;
}
}
englen = index;
index = 0;
while(!feof(fp_chs) && index < englen) /*遍历中文字幕文件,存取数据*/
{
fgets(buf, 128, fp_chs);
if(strstr(buf, "-->") != NULL)
{
if(index > 0 && strcmp(buf, chs_time_buf) == 0) continue;
strcpy(chs_time_buf, buf);
strcpy(chs_str_buf, "");
while(!feof(fp_chs) && index < englen)
{
fgets(buf, 128, fp_chs);
if(strcmp(buf, "\n") == 0)
{
strcat(chs_str_buf, engsub[index]); /*如果遇到空行,添加英文字幕*/
break;
}
strcat(chs_str_buf, buf);
}
if(strstr(chs_str_buf, "{")) continue;
fprintf(fp_new, "%d\n", index + 1);
fputs(chs_time_buf, fp_new);
fputs(chs_str_buf, fp_new);
fputs("\n", fp_new);
index++;
}
}
for(index = 0; index < englen; index++)
free(engsub[index]);
free(engsub);
free(filepath_new);
free(chs_time_buf);
free(chs_str_buf);
free(buf);
fclose(fp_chs);
fclose(fp_eng);
fclose(fp_new);
}
int main()
{
char *filepath_eng = "D:\\文档\\CB\\sub\\subfile\\Elementary.S02E24.720p.HDTV.X264-DIMENSION.英文.srt";
char *filepath_chs = "D:\\文档\\CB\\sub\\subfile\\Elementary.S02E24.720p.HDTV.X264-DIMENSION.简体.srt";
chs_eng(filepath_eng, filepath_chs);
return 0;
}
c语言英文课程带字幕,C语言实现中英文字幕合并相关推荐
- 兰州大学C语言程序设计课程作业,兰州大学C语言程序设计课程作业1附答案.doc...
兰州大学C语言程序设计课程作业1附答案.doc C 语言程序设计课程作业语言程序设计课程作业_A 历次成绩 完成时间 查看详情 1.0.0 2015-11-21 091531 2.0.0 2015-1 ...
- 兰州大学C语言程序设计课程作业,【兰州大学|兰州大学C语言程序设计课程作业( 五 )】语言程序设计|课程|作业-傻大方...
『易坊知识库摘要_兰州大学|兰州大学C语言程序设计课程作业( 五 )』34.用户未作答标准答案exp04. 以下叙述中正确的是 在程序的一行上可以出现多个有效的预处理命令行使用带参的宏时,参数的类型应 ...
- 课程管理系统c语言程序,课程信息管理系统C语言程序Word版
<课程信息管理系统C语言程序Word版>由会员分享,可在线阅读,更多相关<课程信息管理系统C语言程序Word版(19页珍藏版)>请在人人文库网上搜索. 1.传播优秀Word版文 ...
- c语言程序设计课程作用,《C语言程序设计》课程标准
<C语言程序设计>课程标准 适用专业: 三年制中职计算机应用专业 一.前言 (一)课程的性质 本课程是中职软件与信息服务专业的一门主干专业基础课程,旨在培养学生计算机编程基本思想.编程基本 ...
- c语言简单课程设计报告,C语言课程设计报告—范例
<C语言课程设计报告-范例>由会员分享,可在线阅读,更多相关<C语言课程设计报告-范例(18页珍藏版)>请在人人文库网上搜索. 1.XX学院C语言课程设计报告课程名称: C语言 ...
- c语言查询课程信息,《C语言程序设计》课程设计报告-招生信息查询系统.docx
<C语言程序设计>课程设计报告-招生信息查询系统 课 程 设 计 报 告题目: 招生信息查询系统 课程名称: C语言程序设计 专业班级: 信息安全1302 学 号: 姓 名: 指导教师: ...
- c语言程序课程设计摘要,C语言程序课程设计报告精编.docx
湖南涉外经济学院 课程设计报告 课程名称: 报告题目: 学生姓名: 所在学院: 专业班级: 学生学号: 指导教师: C语言课程设计 **爱若烟花空< 信息科学与工程学院 **** 爱若 烟 花* ...
- c语言程序设计课程技能点,C语言程序设计课程标准.doc
徽商职业学院C语言程序设计课程标准 课程编码课程类别B适用专业软件.信管.自动化授课单位电子信息系学 分4学 时64编写执笔人王艳兵审定负责人编写日期2012.9.18审定日期一.课程概述 (一)课程 ...
- c语言程序设计课程设计水果,C语言程序设计课程设计报告超市水果信息管理系统...
C语言程序设计课程设计报告超市水果信息管理系统 西 安 邮 电 大 学(计算机学院)高级语言课程设计报告题 目: 超市水果信息管理系统专业名称: XXXX班 级: XXXX学生姓名: XXXX学号(8 ...
最新文章
- leetcode 442. Find All Duplicates in an Array | 442. 数组中重复的数据(位运算)
- 英特尔收购McAfee的10种结局猜测
- leetcode 879. 盈利计划(dp)
- java失败javac成功_JAVA SE JDK-10安装、配置(解决java成功,javac失败问题)
- TCP协议特点和TCP报文段
- 截取字符串--sql和access的区别
- Zephyr移植到NXP MIMXRT1060_EVK-RT1061 CVL5A过程
- 从零开始的Python学习Episode 19——面向对象(2)
- mysql 合并_MySQL——合并查询结果
- Nexus下载网盘地址,免费哦,烦要币的
- python为什么卸载不了_为什么Python3.8删除不了?
- Python爬虫案例:爬取必应壁纸
- GBase8a如何选择 hash 分布列
- OpenCASCADE 读写STEP文件
- 微信小程序:map地图自动缩放自适应大小
- 加班、加人、延期是糟糕的办法
- NAS不够快?那就上SSD享受如火箭般的体验吧!
- S-Nim (HDU 1536)组合博弈SG多组游戏
- [从0开始机器学习]4.线性回归 正规方程
- 英读廊——艺术家、穷人和音乐家之10美元的奇异之旅(The Artist, the Poor Man, and the Musician)
热门文章
- JS运行原理与机制(乾坤未定,你我皆是黑马4-5)
- C#输出日志文件——log4net组件
- 又到一年表白季,520它又来了!Python花式表白的几种姿势
- 网站设计如何适合用户的操作习惯?
- 西安工业大学计算机科学,喻钧 - 西安工业大学 - 计算机科学与工程学院
- 初探CAD/CAE一体化设计
- c# ToolStrip控件图片和文字显示
- 执业医师考试该如何备考?
- 6.1_6 Python3.x入门 P7 【字符串格式化】四种方式(手动、%-formatting、str.format()、f-String)
- EasyExcel复杂表头导入(一对多)