ohhh si ya me fije lo que le falto, se me olvido ponerle los encabezados de las funciones
y el problema esta en que no imprime el archivo como deberia
Código (c) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 8
typedef enum {INS,OP,DIR,MAQ,CAL,X_CAL,TOTAL} tabla;
typedef struct nodo
{
char *instruccion;
char *operando;
char *modo_direccionamiento[MAX];
char *codigo_maquina[MAX];
char *bytes_calculados[MAX];
char *bytes_x_calcular[MAX];
char *suma_bytes[MAX];
struct nodo *sig;
}COD;
void quitarSaltosLinea(char *cadena);
void buscarFinLinea(FILE *fd);
void ignorarEspacios(FILE *fd);
void imprimirLista(COD *cabeza);
char *Tabla_Operandos(FILE *hc12,int tabla);
int main()
{
int car,i;
FILE *hc12;
COD *cabeza = NULL,*ultimo;
char *ins,*op,*dir[MAX],*maq[MAX],*cal[MAX],*x_cal[MAX],*suma[MAX];
if((hc12 = fopen("archivo.txt","r"))!= NULL)
{
while((car = fgetc(hc12))!= EOF)
{
i = 0;
ins = Tabla_Operandos(hc12,INS);
printf("%s\t",ins);
ignorarEspacios(hc12);
op = Tabla_Operandos(hc12,OP);
printf("%s",op);
do
{
ignorarEspacios(hc12);
dir[i] = Tabla_Operandos(hc12,DIR);
printf("\t%s\t",dir[i]);
ignorarEspacios(hc12);
maq[i] = Tabla_Operandos(hc12,MAQ);
printf("%s\t",maq[i]);
ignorarEspacios(hc12);
cal[i] = Tabla_Operandos(hc12,CAL);
printf("%s\t",cal[i]);
ignorarEspacios(hc12);
x_cal[i] = Tabla_Operandos(hc12,X_CAL);
printf("%s\t",x_cal[i]);
ignorarEspacios(hc12);
suma[i] = Tabla_Operandos(hc12,TOTAL);
printf("%s\n",suma[i]);
buscarFinLinea(hc12);
printf("*%c*",car);
i++;
}while(car == '\t');
}
}
return 0;
}
void buscarFinLinea(FILE *hc12)
{
int car;
while((car = fgetc(hc12))!= '\n' && car != EOF)
;
}
void ignorarEspacios(FILE *hc12)
{
int car;
do
{
car = fgetc(hc12);
}while(car == '\t' || car == ' ');
}
char *Tabla_Operandos(FILE *hc12,int tabla)
{
int car,lon = 0,pos;
char *cadena;
fseek(hc12,-1,SEEK_CUR);
pos = ftell(hc12);
if((tabla==INS)||(tabla==OP)||(tabla==DIR)||(tabla==MAQ)||(tabla==CAL)||(tabla==X_CAL))
{
do
{
car = fgetc(hc12);
lon++;
}while(car != '\t' && car != EOF);
}
else
{
do
{
car = fgetc(hc12);
lon++;
}while(car != '\n' && car != EOF);
lon--;
}
fseek(hc12,pos,SEEK_SET);
cadena = (char*)calloc((lon+1),sizeof(char));
fgets(cadena,lon+1,hc12);
quitarSaltosLinea(cadena);
return cadena;
}
void quitarSaltosLinea(char *cadena)
{
char *ptr;
if(((ptr=strchr(cadena,'\n'))!=NULL)||((ptr=strchr(cadena,'\t'))!=NULL)||((ptr=strchr(cadena,' '))!=NULL))
*ptr = '\0';
}
y el problema esta en que no imprime el archivo como deberia