Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/05/2013, 15:41
only_skating
 
Fecha de Ingreso: agosto-2008
Mensajes: 382
Antigüedad: 15 años, 8 meses
Puntos: 2
Respuesta: Leer bloc de notas. URGEE :(

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
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #include<math.h>
  5. void logg(int *id); //función en la que compruebo los datos introducidos por el usuario
  6. void iniciosesion(int *id,char tsanitaria[], int longitudtsanitaria);//funcion en la que, una vez introducidos correctamente, creamos el puntero *id
  7. void main(){
  8. int id;
  9. logg(&id);
  10. printf("usuario con id %d",id); //prueba sin mas
  11. system("pause");
  12. }
  13.  
  14. void logg(int *id){
  15.     char datos[10000],nacimiento[11]; //en la variable datos meto todo el archivo pacientes.txt para analizarlo
  16.     char tsanitaria[4];
  17.     int i=0,longitudtsanitaria,longitudnacimiento,j=0,x=0,contador=0,correcto=0,ok=0, prueba=0;
  18.     while(ok==0){ //este bucle se repetirá hasta que el paciente introduzca bien sus datos
  19.     int i=0,x=0,contador=0,correcto=0,j=0;
  20.     FILE *rd; //abro archivo
  21.     rd=fopen("pacientes.txt", "r");
  22.     while((datos[i]=fgetc(rd))!=EOF){ ++i; } i=0;//Aquí es donde paso toda la informacion a una variable
  23.     printf("Introduce tu tarjeta sanitaria\n");
  24.     scanf("%s",tsanitaria);
  25.     printf("Introduce tu fecha de nacimiento de la forma dd-mm-aaaa\n");
  26.     scanf("%s",nacimiento);
  27.     longitudtsanitaria= strlen(tsanitaria); //calculo la longitud para posteriores calculos
  28.     longitudnacimiento= strlen(nacimiento);
  29.     while(datos[i] != '\0'){  //Aquí comienza el bucle que va recorriendo caracter por caracter hasta encontrar coincidencias con lo introducido por el paciente
  30.    
  31.                                   if(datos[i]==tsanitaria[0]){ x=i; //Si un caracter analizado coincide con el primer caracter de la tsanitaria introducido compruebo si coincide entero
  32.                                           for(j=0;j<longitudtsanitaria;j++){ if(datos[x]==tsanitaria[j]){ contador++; if(contador==longitudtsanitaria){ correcto++;}} x++;}} contador=0;
  33.                                   if(correcto==1){
  34.                                       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,
  35.                                                                                                por lo menos no seria correcto introducir la tsanitaria de uno y el nacimiento de otro, por ello igualo
  36.                                                                                                correcto=0 para que no de el logg-in como correcto*/
  37.                                   if(datos[i]==nacimiento[0]){ x=i; //compruebo lo mismo pero con el nacimiento
  38.                                           for(j=0;j<longitudnacimiento;j++){ if(datos[x]==nacimiento[j]){ contador++; if(contador==longitudnacimiento){ correcto++;}} x++;}}    contador=0;                                      
  39.     i++;}
  40.     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á
  41.     iniciosesion(id, tsanitaria,longitudtsanitaria);} //aqui llamo a la función iniciar sesión para que genere el puntero y podamos operar
  42.     else{ printf("logg-in incorrecto, reintente\n\n");
  43.     }}
  44. }

mil gracias de verdad
__________________
la experiencia es la mejor de las escuelas, pero la obtienes cuando ya no la necesitas.

Yo soy aquel que mucho hace trabajar a la gente del foro, pero siempre gratifico con un karma