#include #include #include /********************************************/ #define FPS_IN 25.0 // FPS ENTRADA #define FPS_OUT 23.978 // FPS SALIDA /********************************************/ int lookAhead(FILE *F, int n){ // PRE: F= // POST: lookAhead=d_x AND F= int c; for(c=1;c // POST: end_of_file = (x>n) return (0xffffffff==lookAhead(F,1)); } int end_of_line(FILE *F){ // indica si estamos final de linea, valido para formato WIN/UNIX/MAX int c; c = lookAhead(F,1); if (c == 0x0D) c = lookAhead(F, 2); return (c == 0x0A); } void skip_line(FILE *F){ // salta la linea actual, valido para formato WIN/UNIX/MAX int c; while (!end_of_line(F)) fgetc(F); if (end_of_line(F)){ c = fgetc(F); if (c == 0x0D) c = fgetc(F); } } int esNum(int character){ return (character>=48 && character<=57); } int leeNum(FILE *F, int n){ int veces; int ok=1; for(veces=0; veces ", 5, sizeof(char), Fout); pilla_tiempo(F, &h, &m, &s, &ms); convertir(h,m,s,ms, &h2, &m2, &s2, &ms2); pon_tiempo(Fout, h2, m2, s2, ms2); new_line(Fout); skip_line(F); } void abrirFicheros(FILE *in, FILE *out, char *f1, char *f2){ in=fopen(f1, "r"); out = fopen(f2, "w"); } int main(int argc, char **argv){ FILE *F, *Fout; if (argc != 3 && argc != 2){ printf("ERROR:\tUSO %s SUB_ENTRADA.srt SUB_SALIDA.srt\n", argv[0]); exit(1); }else abrirFicheros( F, Fout, argv[1], (argc==3 ? argv[2] : strcat(argv[1], ".srt")) ); while (!end_of_file(F)) if (linea_OK(F)) Convierte_Linea(F, Fout); else clonaLinea(F, Fout); fclose(F); fclose(Fout); }