Supongamos que tienes un fichero "datos.txt" cuyo contenido es:
ESTADO HABITACIONES
ST1 Libre
ST2 Ocupada
ST3 Libre
Que indica la clave de cada habitación y si está Libre/Ocupada. Y queremos buscar el estado de una habitación en concreto.
#define MAX_SIZE 100 // longitud para guardar una palabra
int main(){
FILE *fichero;
fichero
= fopen("datos.txt", "r"); // abrimos el fichero en modo lectura char *clave_buscada = "ST2"; // clave que queremos buscar
char palabra_actual[MAX_SIZE], estado_buscado[MAX_SIZE];
bool encontrado = false; // si no quieres usar <stdbool.h> usa int encontrado = 0
fgets(palabra_actual
, MAX_SIZE
, fichero
); // guardamos la primera linea que no sirve para nada while(!feof(fichero
) and
!encontrado
){ // mientras no lleguemos al final del fichero y no hayamos encontrado la palabra que buscamos fscanf(fichero
, "%s", palabra_actual
); // guardamos una palabra fgets(estado_buscado
, MAX_SIZE
, fichero
); // guardamos el resto de la linea if(strncmp(clave_buscada
, palabra_actual
, 3) == 0) // comparamos los 3 primeros caracteres con la clave que buscamos y si son iguales... encontrado = true; // ...indicamos que ya la hemos encontrado para salir antes del bucle. Si no se ha usado bool, cambiar por encontrado = 1
}
if(encontrado) // si la hemos encontrado
printf("La informacion de %s es: %s\n", clave_buscada
, estado_buscado
); }
Se puede usar una sola variable (palabra_actual / estado). He usado 2 para que se vea más visual lo que hacemos. La clave yo la he elegido como he querido, lo suyo es pedírsela al usuario y elegir el formato que tendrá tu fichero y adaptarlo para que funcione. En el ejemplo te muestro cómo funciona tanto <fgets()> como <fscanf()> para que veas las diferencias.
El resto ya te queda a ti.
(El código no lo he probado por lo que puede tener algún error del que no me haya dado cuenta)