比方 肖申克的救牍 字幕,我希望把台词都提取出来
3
00:02:15,361 --> 00:02:17,034
吵得很凶
4
00:02:17,346 --> 00:02:19,640
她说她不怕我知道
5
00:02:20,164 --> 00:02:21,730
她讨厌偷偷摸摸
//读取一行信息
static int LRCGetLine(FILE *pIFile,char **pBuf,int *length)
{
char Readchar = 0;
int Curs = 0;
int readlen = 0;
while(1)
{
readlen = fread(&Readchar,1, 1, pIFile);
if(readlen == 1)
{
Curs++;
if(Readchar == 13)//0x0d,回车
{
fread(&Readchar,1, 1, pIFile);
if(Readchar == 10)//0x0a, 换行
{
fseek(pIFile, (0-Curs-1), SEEK_CUR);
*pBuf = malloc(Curs);
if(NULL != *pBuf)
{
fread(*pBuf,Curs-1, 1, pIFile);
}
else
{
return 0;
}
fseek(pIFile, 2, SEEK_CUR);
(*pBuf)[Curs-1] = '/0';
*length = Curs-1;
break;
}
}
}
else
{
*pBuf = NULL;
return 0;
}
}
return 1;
}
int checkIsNum(char *str, int len)
{
int i = 0;
while(i < len)
{
if(*(str+i)<0x30||*(str+i)>0x39)
{
return 0;
}
i++;
}
return 1;
}
//分析文件,将有效信息写到文件尾
void Analysize_juben(char *filePath)
{
FILE *fp = NULL;
char *str = NULL;
char *tempStr = NULL;
char newFilePath[50];
int len, file_size;
int n_size =0;
//open file
fp = fopen(filePath, "rb+");
if(NULL == fp)return;
len = ftell(fp);
fseek(fp, 0L, SEEK_END);
len = ftell(fp) - len;
rewind(fp); //reset ptr
file_size = len;
str = (char *)malloc(len+1);
memset((void *)str, 0x0, len+1);
while(LRCGetLine(fp, &tempStr, &len))
{
//
if(checkIsNum(tempStr, len))
{
n_size += len;
strcat(str, tempStr);
}
else
{
if((29 == len) && ((char *)NULL != strstr(tempStr, "-->")))
{
free(tempStr);
tempStr = NULL;
continue;
}else
{
n_size += len;
strcat(str, tempStr);
strcat(str, "/n");
}
}
free(tempStr);
tempStr = NULL;
}
len = strlen(str);
//sprintf(newFilePath, "%s%c%s", "d://backup//newtxt", '.', "txt");
//fclose(fp);
//fp = NULL;
//fp = fopen(newFilePath, 'w');
//if(NULL == fp)
//{
// return;
//}
len = fwrite(str, len+1, 1, fp);
if(len == n_size)
{
fclose(fp);
}
fclose(fp);
}
void main(void)
{
char filePath[50];
char c;
//rotationBmp();
do{
printf("wait,press enter to continue..............");
c = getch();
if(0x0d== c)
{
//输入文件路径
printf("input file path:");
scanf("%s", filePath);
Analysize_juben(filePath);
}else
{
continue;
}
}while(1);
}