elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  se me borro el codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: se me borro el codigo  (Leído 1,479 veces)
m@o_614


Desconectado Desconectado

Mensajes: 389


Ver Perfil
se me borro el codigo
« en: 27 Enero 2014, 05:08 am »

Saludos, tengo un problema con el siguiente codigo que creo que ya habia posteado antes, pero lo que pasa es que de repente la pantalla se me congelo y cuando reinicie la maquina ya no tenia codigo, se me borro todo y ahora estoy empezandolo a hacer de nuevo todo, el codigo me lee de un archivo todos los codigos de operacion y me hace una lista simplemente ligada, esto si funciona bien, pero a la hora de que le pido que busque un codigo de operacion en la lista siempre me imprime que no lo encuentra, y no entiendo por que? si alguien me pudiera ayudar se lo agradeceria mucho

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define LONG_ETIQUETA 8
  5. #define LONG_CODOP 5
  6. #define COMENTARIO ';'
  7. #define TABULADOR '\t'
  8. #define ESPACIOS_ ' '
  9. #define MAX 8
  10.  
  11. typedef enum {FALSO,VERDADERO} booleano;
  12. typedef enum {ETIQUETA,CODOP,OPERANDO} linea;
  13.  
  14. typedef struct nodo
  15. {
  16.    char *instruccion;
  17.    struct nodo *sig;
  18. }COD;
  19.  
  20. void imprimirLista(COD *cabeza);
  21. int verificarCombinacion(FILE *fd);
  22. booleano esComentario(FILE *fd);
  23. char *Etiqueta_Codop_Operando(FILE *fd,int linea);
  24. void ultimaLinea(char *codop);
  25. void buscarFinLinea(FILE *fd);
  26. void ignorarEspacios(FILE *fd);
  27. void listaTABOP(COD **cabeza);
  28. COD *ultimoElemento(COD **cabeza);
  29. COD *crearNodo(char *ins);
  30. void insertarFinal(char *ins,COD *ultimo);
  31. char *Tabla_Operandos(FILE *hc12);
  32. COD *buscarCodop(COD *cabeza,char *codop);
  33. void quitarSaltosLinea(char *cadena);
  34. booleano esNumero(char caracter);
  35. booleano esLetra(char caracter);
  36.  
  37. int main()
  38. {
  39.    FILE *fd;
  40.    int car,combinacion;
  41.    COD *cabeza = NULL,*encontrado = NULL;
  42.    char *etiqueta,*codop,*operando;
  43.    listaTABOP(&cabeza);
  44.    //imprimirLista(cabeza);
  45.    if((fd = fopen("ejemplo_errores.txt","r"))!= NULL)
  46.    {
  47.        while((car = fgetc(fd))!= EOF)
  48.        {
  49.            switch(car)
  50.            {
  51.                case COMENTARIO:
  52.                   if(esComentario(fd))
  53.                      printf("COMENTARIO\n\n");
  54.                   else
  55.                      buscarFinLinea(fd);
  56.                   break;
  57.                case ESPACIOS_:
  58.                case TABULADOR:
  59.                   etiqueta = "null";
  60.                   printf("ETIQUETA = %s\n",etiqueta);
  61.                   ignorarEspacios(fd);
  62.                   codop = Etiqueta_Codop_Operando(fd,CODOP);
  63.                   printf("CODOP = %s\n",codop);
  64.                   erroresCodop(codop);
  65.                   combinacion = verificarCombinacion(fd);
  66.                   if(combinacion == 2)
  67.                   {
  68.                       operando = "null";
  69.                       printf("OPERANDO = %s\n\n",operando);
  70.                   }
  71.                   else
  72.                   {
  73.                       ignorarEspacios(fd);
  74.                       operando = Etiqueta_Codop_Operando(fd,OPERANDO);
  75.                       printf("OPERANDO = %s\n\n",operando);
  76.                   }
  77.                   break;
  78.                default:
  79.                   etiqueta = Etiqueta_Codop_Operando(fd,ETIQUETA);
  80.                   printf("ETIQUETA = %s\n",etiqueta);
  81.                   erroresEtiqueta(etiqueta);
  82.                   combinacion = verificarCombinacion(fd);
  83.                   if(combinacion == 2)
  84.                   {
  85.                       codop = "null";
  86.                       printf("CODOP = %s\n",codop);
  87.                       erroresCodop(codop);
  88.                       operando = "null";
  89.                       printf("OPERANDO = %s\n\n",operando);
  90.                   }
  91.                   else
  92.                   {
  93.                       ignorarEspacios(fd);
  94.                       codop = Etiqueta_Codop_Operando(fd,CODOP);
  95.                       printf("CODOP = %s\n",codop);
  96.                       erroresCodop(codop);
  97.                       combinacion = verificarCombinacion(fd);
  98.                       if(combinacion == 2)
  99.                       {
  100.                           operando = "null";
  101.                           printf("OPERANDO = %s\n\n",operando);
  102.                       }
  103.                       else
  104.                       {
  105.                           ignorarEspacios(fd);
  106.                           operando = Etiqueta_Codop_Operando(fd,OPERANDO);
  107.                           printf("OPERANDO = %s\n\n",operando);
  108.                       }
  109.                   }
  110.                   break;
  111.            }
  112.            if((encontrado = buscarCodop(cabeza,codop)) == NULL)
  113.               printf("NO SE ENCONTRO EL CODOP DE OPERACION\n");
  114.        }
  115.        ultimaLinea(codop);
  116.    }
  117.    else
  118.       printf("No se pudo abrir el archivo");
  119.    return 0;
  120. }
  121.  
  122. booleano esComentario(FILE *fd)
  123. {
  124.    int car;
  125.    while((car = fgetc(fd))!= '\n')
  126.    {
  127.        if(car == ';')
  128.           return 0;
  129.    }
  130.    return 1;
  131. }
  132.  
  133. void buscarFinLinea(FILE *fd)
  134. {
  135.    int car;
  136.    while((car = fgetc(fd))!= '\n')
  137.        ;
  138. }
  139.  
  140. void ignorarEspacios(FILE *fd)
  141. {
  142.    int car;
  143.    do
  144.    {
  145.        car = fgetc(fd);
  146.    }while(car == '\t' || car == ' ');
  147. }
  148.  
  149. int verificarCombinacion(FILE *fd)
  150. {
  151.    int car,combinacion;
  152.    fseek(fd,-1,SEEK_CUR);
  153.    if((car = fgetc(fd))== '\n')
  154.       combinacion = 2;
  155.    else
  156.       combinacion = 1;
  157.    return combinacion;
  158. }
  159.  
  160. booleano esLetra(char caracter)
  161. {
  162.    if((caracter >= 'A' && caracter <= 'Z')||(caracter >= 'a' && caracter <= 'z'))
  163.       return 1;
  164.    else
  165.       return 0;
  166. }
  167.  
  168. booleano esNumero(char caracter)
  169. {
  170.    if(caracter >= '0' && caracter <= '9')
  171.       return 1;
  172.    else
  173.       return 0;
  174. }
  175.  
  176. char *Etiqueta_Codop_Operando(FILE *fd,int linea)
  177. {
  178.    int car,lon = 0,pos;
  179.    char *cadena,*ptr;
  180.    fseek(fd,-1,SEEK_CUR);
  181.    pos = ftell(fd);
  182.    if((linea == ETIQUETA)||(linea == CODOP))
  183.    {
  184.        do
  185.        {
  186.            car = fgetc(fd);
  187.            lon++;
  188.        }while(car != '\t' && car != ' ' && car != '\n');
  189.    }
  190.    else
  191.    {
  192.        do
  193.        {
  194.            car = fgetc(fd);
  195.            lon++;
  196.        }while(car != '\n');
  197.    }
  198.    cadena = (char*)calloc((lon+1),sizeof(char));
  199.    fseek(fd,pos,SEEK_SET);
  200.    fgets(cadena,lon+1,fd);
  201.    if(((ptr=strchr(cadena,'\n'))!=NULL)||((ptr=strchr(cadena,'\t'))!=NULL)||((ptr=strchr(cadena,' '))!=NULL))
  202.       *ptr = '\0';
  203.    return cadena;
  204. }
  205.  
  206. void ultimaLinea(char *codop)
  207. {
  208.    if((strcmp(codop,"end")) != 0)
  209.       printf("Error:No se encontro el END.\n");
  210. }
  211.  
  212. void quitarSaltosLinea(char *cadena)
  213. {
  214.    char *ptr;
  215.    if(((ptr=strchr(cadena,'\n'))!=NULL)||((ptr=strchr(cadena,'\t'))!=NULL)||((ptr=strchr(cadena,' '))!=NULL))
  216.       *ptr = '\0';
  217. }
  218.  
  219. void listaTABOP(COD **cabeza)
  220. {
  221.    int car;
  222.    FILE *hc12;
  223.    COD *ultimo = NULL;
  224.    char *ins;
  225.    if((hc12 = fopen("Tabla_OP.txt","r"))!= NULL)
  226.    {
  227.         while((car = fgetc(hc12))!= EOF)
  228.        {
  229.            if(car != '\t')
  230.            {
  231.                ins = Tabla_Operandos(hc12);
  232.                buscarFinLinea(hc12);
  233.                if(*cabeza == NULL)
  234.                   *cabeza = crearNodo(ins);
  235.                else
  236.                {
  237.                    ultimo = ultimoElemento(cabeza);
  238.                    insertarFinal(ins,ultimo);
  239.                }
  240.            }
  241.            else
  242.               buscarFinLinea(hc12);
  243.        }
  244.    }
  245.    else
  246.       printf("No se pudo abrir el archivo");
  247. }
  248.  
  249. COD *ultimoElemento(COD **cabeza)
  250. {
  251.    COD *ptr;
  252.    ptr = *cabeza;
  253.    while(ptr->sig != NULL)
  254.       ptr = ptr->sig;
  255.    return ptr;
  256. }
  257.  
  258. char *Tabla_Operandos(FILE *hc12)
  259. {
  260.    int car,lon = 0,pos;
  261.    char *cadena;
  262.    fseek(hc12,-1,SEEK_CUR);
  263.    pos = ftell(hc12);
  264.        do
  265.        {
  266.            car = fgetc(hc12);
  267.            lon++;
  268.        }while(car != '\t');
  269.    fseek(hc12,pos,SEEK_SET);
  270.    cadena = calloc((lon+1));
  271.    fgets(cadena,lon+1,hc12);
  272.    quitarSaltosLinea(cadena);
  273.    return cadena;
  274. }
  275.  
  276. COD *buscarCodop(COD *cabeza,char *codop)
  277. {
  278.    COD *ptr;
  279.    for(ptr = cabeza;ptr != NULL;ptr = ptr->sig)
  280.    {
  281.        if(ptr->instruccion == codop)
  282.           return ptr;
  283.    }
  284.    return NULL;
  285. }
  286.  
  287. void insertarFinal(char *ins,COD *ultimo)
  288. {
  289.    ultimo->sig = crearNodo(ins);
  290.    ultimo->sig->sig = NULL;
  291.    ultimo = ultimo->sig;
  292. }
  293.  
  294. COD *crearNodo(char *ins)
  295. {
  296.    int tam;
  297.    COD *x;
  298.    x = (COD*)malloc(sizeof(COD));
  299.    tam = strlen(ins);
  300.    x->instruccion = malloc(tam);
  301.    strcpy(x->instruccion,ins);
  302.    x->sig = NULL;
  303.    return x;
  304. }
  305.  



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[AYUDA] Se me borro un archivo
Dispositivos Móviles (PDA's, Smartphones, Tablets)
WIитX 7 4,214 Último mensaje 5 Marzo 2014, 19:13 pm
por WIитX
Ayuda!! Netbeans me borro todo el codigo
Java
PabloPbl 2 3,728 Último mensaje 5 Marzo 2015, 20:55 pm
por PabloPbl
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines