4
« en: Martes 20 de Enero de 2004, 09:33 »
Resulta que tengo un archivo llamado "stop_words.txt" que contiene una serie de palabras. El programa principal lo que hace es leer el contenido de otro archivo llamado "texto.txt", copiarlo a otro archivo llamado "salida.txt" pero que no contengan las palabras que hay en el archivo de palabras prohibidas("stop_words.txt"). Lo que pasa que al ejecutar el programa principal, no me da problema hasta que ha leido y guardado un numero considerable de palabras, es decir, al principio lo hace bien pero despues, dice que no puede abrir el archivo, habiendolo abierto antes muchisimas veces. La verdad es que no se por que pasa esto. Aqui os dejo la funcion por si os sirve de ayuda. Gracias
char cad[20]; // Variable global
// Devuelve un 1 si es stopwords y un 0 si no lo es
int es_stopwords(unsigned char cadena[20])
{
FILE *stop; // Archivo con las palabras stopwords
char auxiliar[20];
char ch;
int j = 0;
char salto ='\n';
// Se abre el archivo con todos los documentos en modo texto y de solo lectura
if ((stop = fopen("c:\\docum\\stop_words.txt", "r")) == NULL)
{
fprintf(stderr, "No se puede abrir el archivo stop_words);
getch();
return 1;
}
inicializa(auxiliar);
while (!feof(stop))
{
ch = getc(stop);
if (ch != salto)
{
auxiliar[j]=ch;
j++;
}
if (ch == salto || strcmp(cad,auxiliar) == 0)
{
if (strcmp(cad,auxiliar)== 0)
return 1;
else
{
inicializa(auxiliar);
j=0;
}
}// Fin del if
else if (ch == salto)
{
inicializa(auxiliar);
j=0;
} // Fin de else
} // Final del archivo
fclose(stop); // Se cierra el archivo con las stopwords
return 0;
} // Fin de es_stopwords
// Inicializa la cadena auxliar
void inicializa(unsigned char cadena[20])
{
//free(cad);
//cadena=(char *) malloc (20*sizeof(char));
for(int i=0;i<=20;i++)
cadena='\0';
}// Fin de inicializacion