Hola, estoy intentando hacer un programa en C que descubra si un archivo de Word tiene un pie de página...Para ello tengo que buscar una secuencia de de caracteres en el archivo y me he montado una funcioncilla que es la siguiente:
La he probado con archivos de texto y funciona perfectamente...
El problema es que cuando le paso el .doc o .docx deja de buscar antes de llegar al final del archivo...he abierto el .doc con un editor hexadecimal y me he encontrado que dentro del propio archivo hay caracteres con FF y por lo tanto en cuanto se llega allí se cree que es el EOF y termina la búsqueda...
¿Hay alguna forma de detectar que no es el auténtico fin de fichero y continuar la búsqueda?
Código (c) [Seleccionar]
int buscar(FILE * fp, char * cadena){
char car;
int longi = strlen(cadena);
if(longi < 1)
return -2;
int i=0;
int k=0;
while((car = fgetc(fp)) != EOF){
if(car == cadena[i]){
k++;
while(i+1<(longi-1) && !feof(fp) && (car=fgetc(fp)) == cadena[++i])
k++;
if(k == longi-1)
return 0;
else if(feof(fp))
return -1;
else
i=k=0;
}
}
return -1;
}
La he probado con archivos de texto y funciona perfectamente...
El problema es que cuando le paso el .doc o .docx deja de buscar antes de llegar al final del archivo...he abierto el .doc con un editor hexadecimal y me he encontrado que dentro del propio archivo hay caracteres con FF y por lo tanto en cuanto se llega allí se cree que es el EOF y termina la búsqueda...
¿Hay alguna forma de detectar que no es el auténtico fin de fichero y continuar la búsqueda?