Duda con mi codigo (Manejo de archivos)

Iniciado por Jesuscc29, 12 Agosto 2010, 23:48 PM

0 Miembros y 1 Visitante están viendo este tema.

Jesuscc29

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:

#include <stdio.h>
#include <stdlib.h>
void yes();
void nada_vato();
int main(int argc, char *argv[])
{
  char mararc[100];
  char marca[]= "hacked";
  FILE *arc;
  int string;
  arc = fopen("Prueba.txt", "w");
  fprintf(arc, "Jesus antonio Cota Cota era un gran joven.\n");
  fprintf(arc, "Un dia se topo con un gran mar de conociminetos de C.\n");
  fprintf(arc, "Asi que supo mas! hacked\n");
  fclose(arc);
  arc = fopen("Prueba.txt", "r");
  do
  {
      c = fscanf(arc, "%s", mararc);
      if (mararc == marca)
      {
           yes();
      }     
      else
      {
          continue;
      }
  }
  while (c != EOF);
  fclose(arc);
  nada_vato();
  system("PAUSE");
  return 0;
}

void yes()
{
     printf("si esta la marca en le archivo!.\n");
     system("PAUSE");
     exit;
}

void nada_vato()
{
     printf("No esta la marca, agregala.\n");
     system("PAUSE");
     exit;
}


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



leogtz

if (mararc == marca)

No puedes hacer eso.

Utiliza strncmp().

c no está definido.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Jesuscc29

aH..Olvide 'C' xD... Pero el strncmp() compara si por ejemplo:

if( strcmp( palabra1, palabra2 ) == 0 )
{
      printf("Mismo taman.\n");
}else
{
      printf("Son diferentes");
}


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



leogtz

Compara contenido, no tamaño.

if(strcmp(cadena, otra) == 0)
/* iguales */
else
/* Desiguales */
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Jesuscc29

Mmm.. Cierto, ya lo hice funcionar.. Muchas Gracias =D..  ;-)



do-while

¡Buenas!

Una cosilla mas, esta parte te sobra:

else
{
    continue;
}


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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!