saludos amigos...
pido su ayuda para mi siguiente programa...
en el siguiente estoy buscando la posicion de una cadena dentro del archivo
por ejemplo-....
me amigo se llama juan
pedro es estuciante de ingenieria
la palabra amigo se encuentra en la coordenada (renglon 1, columna 4)y asi sucesivamente
entonces serian las coordenadas las que busco les agradesco de antemano su ayuda.. aqui les dejo mi codigo...
<code>
#include <stdio.h>
#include <string.h>
#include <conio.h>
char renglon[80];
char palabras[100][80]; /* Todos los palabras */
char palabras_diferentes[100][80]; /* Solo palabras diferentes */
int i, j, k, total=0 /* Numero total de palabras*/,
diferentes=0 /* Numero de palabras diferentes */;
int Rep[100]; /* Repeticiones de cada palabra diferente */
void separador(char *renglon, char palabras[100][80], int *total);
void ocurrencias(char *nombre_archivo);
void coordenadas();
int main()
{
char nombre_archivo[100] = "palabras.txt";
clrscr();
ocurrencias(nombre_archivo);
coordenadas();
getch();
return 0;
}
/*
Recibe una cadena y devuelve las palabras de dicha cadena.
Los espacios y saltos de linea son los separadores entre palabras.
*/
void separador(char renglon[80], char palabras[100][80], int *total)
{
int i, j=0;
for(i=0; i<strlen(renglon); i++)
{
/* Si es un caracter distinto de espacio y salto de linea */
if(renglon[i]!=' ' && renglon[i]!='\n')
{
palabras[*total][j] = renglon[i];
j++;
}
/* Si es espacio o salto de linea */
else if(renglon[i]==' ' || renglon[i]=='\n')
{
/* Si el caracter anterior no es espacio ni salto de linea */
if(i>0 && renglon[i-1]!=' ' && renglon[i-1]!='\n')
{
palabras[*total][j] = '\0'; /* Indica fin de palabra */
*total = *total+1; /* Aumenta el numero de palabras */
j=0;
}
}
}
}
void ocurrencias(char nombre_archivo[100]
{
FILE *archivo;
archivo=fopen(nombre_archivo,"r" ;
if(archivo==NULL)
{
printf("No se encuentra archivo: %s\n", nombre_archivo);
return ;
}
/* Lee el archivo linea a linea y obtiene las palabras de esa linea */
while(fgets(renglon,80,archivo))
{
separador(renglon,palabras, &total);
}
fclose(archivo);
/* Saca copia del arreglo original */
for(i=0; i<total; i++)
strcpy(palabras_diferentes[i], palabras[i] ;
/* Saca palabras diferentes */
diferentes = total;
for(i=0;i<diferentes;i++)
{
for(j=i+1;j<diferentes;j++)
{
/* Si encuentra palabra repetida */
if(!strcmp(palabras_diferentes[i], palabras_diferentes[j] )
{
/* Recorre una posicion elementos posteriores */
for(k=j+1;k<diferentes;k++)
strcpy(palabras_diferentes[k-1], palabras_diferentes[k] ;
diferentes--;
j--;
}
}
}
/* Halla repeticiones de cada palabra distinta */
for(i=0; i<diferentes; i++)
Rep[i] = 0;
for(i=0; i<diferentes; i++)
for(j=0;j<total;j++)
if(!strcmp(palabras_diferentes[i], palabras[j] )
Rep[i]++;
gotoxy(10,5);printf("PALABRA\t\tREPETICIONES\t\tCO ORDENADAS" ;
int y=7;
for(i=0; i<diferentes; i++)
{
gotoxy(11,y);printf("%s", palabras_diferentes[i] ;
gotoxy(31,y);printf("%d",Rep[i] ;
y=y+1;
}
}
</code>