cc2srt/cc2srt.c

88 lines
2.3 KiB
C
Raw Normal View History

#include <stdio.h>
#include <stdlib.h>
2021-01-02 22:06:25 +01:00
#include <string.h>
2021-01-02 20:48:45 +01:00
struct tiempo_cc{
int minutos;
int segundos;
2021-01-02 20:48:45 +01:00
};
struct entrada_cc{
struct tiempo_cc tiempo;
char texto[255];
};
2021-01-01 20:15:43 +01:00
struct tiempo_srt{
char hora[3];
char minuto[3];
char segundo[3];
2021-01-01 20:15:43 +01:00
};
struct salida_srt{
int index;
struct tiempo_srt inicio;
struct tiempo_srt fin;
char texto[255];
};
int LeeEntrada(struct entrada_cc *ent, FILE *fentrada){
2021-01-02 20:48:45 +01:00
if (fscanf((FILE *)fentrada, "%d:%d\n", &ent->tiempo.minutos, &ent->tiempo.segundos) < 1) {
2021-01-01 20:15:43 +01:00
return 0;
}
fgets(ent->texto, 255, (FILE *)fentrada);
return 1;
}
2021-01-02 20:48:45 +01:00
void ConvierteTiempo(struct tiempo_cc *entrada, struct tiempo_srt *salida) {
2021-01-02 21:21:45 +01:00
sprintf(salida->hora, "%02d", entrada->minutos/60);
sprintf(salida->minuto, "%02d", entrada->minutos%60);
sprintf(salida->segundo, "%02d", entrada->segundos);
2021-01-02 20:48:45 +01:00
}
2021-01-02 22:06:25 +01:00
void ImprimeSalida(char *cadena, struct salida_srt *sal){
sprintf(cadena, "%d\n%s:%s:%s --> %s:%s:%s\n%s\n", sal->index, sal->inicio.hora, sal->inicio.minuto, sal->inicio.segundo, sal->fin.hora, sal->fin.minuto, sal->fin.segundo, sal->texto);
}
int main(int argc, char **argv) {
FILE *entrada;
FILE *salida;
2021-01-03 01:05:56 +01:00
char cadena [255] = "salida.srt";
2021-01-02 20:48:45 +01:00
struct entrada_cc ent;
struct tiempo_cc tAnterior;
struct salida_srt sal;
if (argc < 2) {
printf("Uso: %s <nombre de fichero a convertir>.\n", argv[0]);
return(3);
}
entrada = fopen(argv[1], "rt");
if (entrada == NULL) {
printf("El fichero %s no se ha podido abrir.\n", argv[1]);
return(1);
}
salida = fopen(cadena, "w");
if (salida == NULL) {
printf("El fichero %s no se ha podido abrir.\n", argv[1]);
fclose(entrada);
return(2);
}
printf("Procesando fichero %s.\n", argv[1]);
fgets(cadena, 256, (FILE *) entrada);
2021-01-02 21:21:45 +01:00
LeeEntrada(&ent, (FILE *)entrada);
2021-01-02 22:06:25 +01:00
sal.index = 1;
2021-01-02 21:21:45 +01:00
ConvierteTiempo(&ent.tiempo, &sal.inicio);
2021-01-02 22:06:25 +01:00
strcpy(sal.texto, ent.texto);
2021-01-02 20:48:45 +01:00
while(LeeEntrada(&ent, (FILE *)entrada) > 0) {
2021-01-02 22:06:25 +01:00
ConvierteTiempo(&ent.tiempo, &sal.fin);
ImprimeSalida(cadena, &sal);
fputs(cadena, (FILE *) salida);
2021-01-02 22:06:25 +01:00
sal.index++;
ConvierteTiempo(&ent.tiempo, &sal.inicio);
strcpy(sal.texto, ent.texto);
}
fclose(entrada);
fclose(salida);
return(0);
}