Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Jesuscc29 en 12 Agosto 2010, 23:48 pm



Título: Duda con mi codigo (Manejo de archivos)
Publicado por: Jesuscc29 en 12 Agosto 2010, 23:48 pm
Que tal, estuve aprendiendo hace poco sobre el mandejo de archivos en C, asi que traté de hacer un codigo el cual busca un String en un texto.. Pero no me sale como quiero.. Aqui está el codigo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void yes();
  4. void nada_vato();
  5. int main(int argc, char *argv[])
  6. {
  7.  char mararc[100];
  8.  char marca[]= "hacked";
  9.  FILE *arc;
  10.  int string;
  11.  arc = fopen("Prueba.txt", "w");
  12.  fprintf(arc, "Jesus antonio Cota Cota era un gran joven.\n");
  13.  fprintf(arc, "Un dia se topo con un gran mar de conociminetos de C.\n");
  14.  fprintf(arc, "Asi que supo mas! hacked\n");
  15.  fclose(arc);
  16.  arc = fopen("Prueba.txt", "r");
  17.  do
  18.  {
  19.      c = fscanf(arc, "%s", mararc);
  20.      if (mararc == marca)
  21.      {
  22.           yes();
  23.      }      
  24.      else
  25.      {
  26.          continue;
  27.      }
  28.  }
  29.  while (c != EOF);
  30.  fclose(arc);
  31.  nada_vato();
  32.  system("PAUSE");
  33.  return 0;
  34. }
  35.  
  36. void yes()
  37. {
  38.     printf("si esta la marca en le archivo!.\n");
  39.     system("PAUSE");
  40.     exit;
  41. }
  42.  
  43. void nada_vato()
  44. {
  45.     printf("No esta la marca, agregala.\n");
  46.     system("PAUSE");
  47.     exit;
  48. }
  49.  

si me dijeran que error tengo se los agradeceria demasiado =D..
Adios!


Título: Re: Duda con mi codigo (Manejo de archivos)
Publicado por: leogtz en 12 Agosto 2010, 23:50 pm
Código:
if (mararc == marca)

No puedes hacer eso.

Utiliza strncmp().

c no está definido.


Título: Re: Duda con mi codigo (Manejo de archivos)
Publicado por: Jesuscc29 en 12 Agosto 2010, 23:59 pm
aH..Olvide 'C' xD... Pero el strncmp() compara si por ejemplo:

Código
  1. if( strcmp( palabra1, palabra2 ) == 0 )
  2. {
  3.      printf("Mismo taman.\n");
  4. }else
  5. {
  6.      printf("Son diferentes");
  7. }

No?.. Porque lo que quiero hacer es ver que el String sea igual a una palabra del Texto.. Me explico? :P


Título: Re: Duda con mi codigo (Manejo de archivos)
Publicado por: leogtz en 13 Agosto 2010, 00:04 am
Compara contenido, no tamaño.

Código:
if(strcmp(cadena, otra) == 0)
/* iguales */
else
/* Desiguales */


Título: Re: Duda con mi codigo (Manejo de archivos)
Publicado por: Jesuscc29 en 13 Agosto 2010, 00:11 am
Mmm.. Cierto, ya lo hice funcionar.. Muchas Gracias =D..  ;-)


Título: Re: Duda con mi codigo (Manejo de archivos)
Publicado por: do-while en 13 Agosto 2010, 00:42 am
¡Buenas!

Una cosilla mas, esta parte te sobra:
Código
  1. else
  2. {
  3.    continue;
  4. }
  5.  

continue se utiliza en las estructuras de repeticion para ignorar todo el codigo que le sigue y forzar la siguiente iteracion, pero en este caso no tienes nada de codigo despues de continue, asi que realmente, el else entero esta de mas. No quiero decir que lo que has hecho sea incorrecto. No supone ninguna incorreccion, simplemente es codigo de mas que has metido y que realmente no tiene ningun efecto.

¡Saludos!