Ya probé a quitar lo de la escritura y buscar simplemente dentro del bloc de notas pero solo me cogia el primer int que encontraba y no pasaba a buscar mas.
¿Como hago para que recorra todos los int hasta encontrar el que busco de la manera anterior? yo lo hice de esta manera y me dijeron que la habia mucho mas facil.
Código C:
Ver original#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
void logg(int *id); //función en la que compruebo los datos introducidos por el usuario
void iniciosesion(int *id,char tsanitaria[], int longitudtsanitaria);//funcion en la que, una vez introducidos correctamente, creamos el puntero *id
void main(){
int id;
logg(&id);
printf("usuario con id %d",id
); //prueba sin mas }
void logg(int *id){
char datos[10000],nacimiento[11]; //en la variable datos meto todo el archivo pacientes.txt para analizarlo
char tsanitaria[4];
int i=0,longitudtsanitaria,longitudnacimiento,j=0,x=0,contador=0,correcto=0,ok=0, prueba=0;
while(ok==0){ //este bucle se repetirá hasta que el paciente introduzca bien sus datos
int i=0,x=0,contador=0,correcto=0,j=0;
FILE *rd; //abro archivo
rd
=fopen("pacientes.txt", "r"); while((datos
[i
]=fgetc(rd
))!=EOF
){ ++i
; } i
=0;//Aquí es donde paso toda la informacion a una variable printf("Introduce tu tarjeta sanitaria\n"); printf("Introduce tu fecha de nacimiento de la forma dd-mm-aaaa\n"); longitudtsanitaria
= strlen(tsanitaria
); //calculo la longitud para posteriores calculos longitudnacimiento
= strlen(nacimiento
); while(datos[i] != '\0'){ //Aquí comienza el bucle que va recorriendo caracter por caracter hasta encontrar coincidencias con lo introducido por el paciente
if(datos[i]==tsanitaria[0]){ x=i; //Si un caracter analizado coincide con el primer caracter de la tsanitaria introducido compruebo si coincide entero
for(j=0;j<longitudtsanitaria;j++){ if(datos[x]==tsanitaria[j]){ contador++; if(contador==longitudtsanitaria){ correcto++;}} x++;}} contador=0;
if(correcto==1){
if(datos[i]=='\n'){ if(datos[i+1]=='\n'){ correcto=0;}}} /*Si al seguir buscando hay un doble salto de linea significa que estamos mirando en otro usuario,
por lo menos no seria correcto introducir la tsanitaria de uno y el nacimiento de otro, por ello igualo
correcto=0 para que no de el logg-in como correcto*/
if(datos[i]==nacimiento[0]){ x=i; //compruebo lo mismo pero con el nacimiento
for(j=0;j<longitudnacimiento;j++){ if(datos[x]==nacimiento[j]){ contador++; if(contador==longitudnacimiento){ correcto++;}} x++;}} contador=0;
i++;}
if(correcto
==2){ printf("Logg-in Correcto\n"); ok
=1; //Si la tsanitaria y el nacimiento coindicen sin la existencia de dobles saltos de linea correcto sera igual a 2 y por tanto el loggin se completará iniciosesion(id, tsanitaria,longitudtsanitaria);} //aqui llamo a la función iniciar sesión para que genere el puntero y podamos operar
else{ printf("logg-in incorrecto, reintente\n\n"); }}
}
mil gracias de verdad