Hola,
Necesito implementar una función que busque una determinada cadena de caracteres en un fichero de texto, y la suplante por otra pedida por teclado.
La cuestión es... Como me muevo por un fichero? Como busco en un fichero la cadena que necesito?
Hasta el momento tengo este codigo:
spoiler#include <stdio.h>
#include <stdlib.h>
#define kTAM 100
typedef struct {
int dni;
char nombre[10];
char apellidos[30];
}datos;
void introducir_datos(datos datos[kTAM],int i);
void leer_personas(datos datos[kTAM]);
int main()
{
datos datos[kTAM];
FILE * fichero;
int opc;
int i=0;
menu:
printf("1.- Introducir personas\n");
printf("2.- Mostrar personas\n");
printf("3.- Ver DNIS\n");
scanf("%d",&opc);fflush(stdin);
switch(opc)
{
case 1:
introducir_datos(datos,i);
i++;
goto menu;
case 2:
leer_personas(datos);
}
system("pause");
return 0;
}
void introducir_datos(datos datos[kTAM],int i)
{
FILE * fich;
fich=fopen("datos.txt","a");
printf("Introduce nombre: ");
gets(datos[i].nombre);
printf("Apellidos: ");
gets(datos[i].apellidos);
printf("DNI: ");
scanf("%d",&datos[i].dni);fflush(stdin);
fprintf(fich,"%d#%s#%s#",datos[i].dni,datos[i].apellidos,datos[i].nombre);
fclose(fich);
return;
}
void leer_personas(datos datos[kTAM])
{
int i;
FILE * fich;
int dni;
char nombre[10];
char apellidos[30];
fich=fopen("datos.txt","r");
for(i=0;i<kTAM && !feof(fich);i++)
{
fscanf(fich,"%[^#]#%[^#]#%d",apellidos,nombre,&dni);fflush(stdin);
printf("Nombre: %s, %s",apellidos,nombre);
printf("\nDNI: %d\n",dni);
printf("----------------------------\n\n\n");
}
fclose(fich);
return;
}
La función adaptada a este codigo seria por ejemplo para buscar un nombre apartir de la variable DNI.
un saludo.