Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: aradxc56 en 13 Marzo 2019, 16:11 pm



Título: ayuda con un programa de ficheros
Publicado por: aradxc56 en 13 Marzo 2019, 16:11 pm
Como podría hacer para que me mostrara el contenido de una línea que el strtoken detecta ?, adjunto el .c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (){
   int i,j;
   char *token;
   char arma[20],buffer[300];
      FILE *objetos ;
      objetos=fopen( "Objetos.txt" , "r" );
      if (objetos == NULL){

             printf( "Error en la lectura del archivo\n" );

       }
      else {//ENCUENTRA EL ARMA EN EL FICHERO
      do{
      
         printf("Introduzca el nombre del objeto\n");
         scanf("%s",arma);
         do{
            fgets(buffer,300,objetos);
            token=strtok(buffer,"/");
            
               if (strcmp(arma,token)==NULL){
                     
                     printf("Tiene estas carateristcas");
                        //mostrar caracteristicas aqui, quiero mostrar la linea que ha detectado el token
                     printf("¿Desea introducir otro objeto?\n    Si==>1  No==>otra tecla\n");
                     scanf("%i",&j);
                     
               }
               else{ printf("No se ha encontrado el objeto\n vuelva a introducir el nombre\n\n");
                              j=1;            
                  }
                        
            
         }while(feof(objetos));
      
      
         
         }while(j==1);   
}
}


Título: Re: ayuda con un programa de ficheros
Publicado por: K-YreX en 13 Marzo 2019, 16:36 pm
Lo primero, el código de tu programa colócalo entre etiquetas de código GeSHi (están encima del cuadro de texto cuando escribes o modificas un mensaje)...

Y creo que la forma más fácil sería sin usar <strtok()>. Tienes en <arma> el nombre que quieres buscar, y en <buffer> una línea que parece que empieza por el nombre del arma, seguido de "/" y de sus características.
Entonces puedes usar <strncmp()> para comparar <arma> con los <n> primeros caracteres de <buffer> (siendo n el tamaño de la palabra <arma>. Cuando coincida, muestra el <buffer> y se mostrará la línea completa.

Suerte :-X