[C con Clase] fatal error LNK1136: invalid or corrupt file

wolverine_ch wolverine_ch en hotmail.com
Sab Abr 16 01:47:07 CEST 2011


hola Conclase, bueno pues he hecho una lista enlazada usando clases y al probarlo en vc++ 6.0 me sale esto:

Linking...
C:\Archivos de programa\Microsoft Visual Studio\VC98\LIB\comdlg32.lib : fatal error LNK1136: invalid or corrupt file
Error executing link.exe.

y al probarlo en turbo c++ 4.5 se ejecuta normal pero me sale un linker warning que dice: "No module definiton file specified: using defaults " y cuando pongo la opcion salir del programa me sale "General protection exception" y se selecciona una linea del codigo del destructor.


#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<iostream.h>
#include<stdlib.h>



class util{


char codigo[20];
char descripcion[30];
float precio;
int stock;

//declaracion de puntero sgte en nodos de la lista
util *sgte;

public:
 util();

 void llenar();
 void presentar();
 friend class listautil;//solo le da permiso a listautil
  char* getcodigoutil(){return codigo;}
  float getprecio(){return precio;};
};


//////////////////////////funciones clase util//////////////////////
 util::util(){

precio=0.0;
stock=0;
 codigo[0]=descripcion[0]=NULL;
 sgte=NULL;

 }



 void util::llenar(){

 cout<<"\n  Registro de nuevo util: \n" ;


	 cout<<"\nIngrese codigo: " ; cin>>codigo;
	 cout<<"\nIngrese descripcion: " ;fflush(stdin); cin>>descripcion;
	 cout<<"\nIngrese prrecio: " ; cin>>precio;
	 cout<<"\nIngrese stock: " ; cin>>stock;



 }


 void util::presentar(){

  cout<<"\n  Datos de util: \n" ;
  cout<<"codigo :"<< codigo<<"\n";
	 cout<<"descripcion: "<<descripcion <<"\n";
	 cout<< "precio: "<<precio<<"\n";
		cout<<"stock :"<<stock <<"\n";

 }




 ///////////////////////////////////////////claselistautiles///////////////////

 class listautil{
  int N;

  util *cab,*ultimo;

  public:
  listautil(){
   N=0;cab=ultimo=NULL;}

  void inserta(util* );
  void opcion_agregar_un_util();
  void presenta();
  util* buscar(char cod[]) ;
  void mostrarutil();

  ~listautil(); //DESTRUCTOR

 };

 //////////////////////////////////////////////////////////////////////////////

	void listautil ::inserta(util* A){
	A->sgte=NULL;
	 if(N==0)
		cab=A;
	 else{
		 A->sgte=ultimo->sgte;
		 ultimo->sgte=A;
		 }

	  ultimo=A;
	  N++;

	}
////////////////////////////////////////////////////////////////////////////////

 void opcion_agregar_un_util(listautil& LU)
 {
  util* aux;
  aux=new util();

  aux->llenar();

  if(LU.buscar(aux->getcodigoutil())==NULL){
	   LU.inserta(aux);

	}else
	  cout<<"\nEl producto ya existe por favor ingrese un producto diferente";

	getch();
  }

///////////////////////////////////////////////////////////////////////////////
  void listautil:: presenta(){   //PRESENTA TODA LA LISTA DE UTILES

  util *temp=cab;

  cout<<"\n   Datos de la lista:\n";

  while(temp!=NULL)
  {
	 temp->presentar();
	 temp=temp->sgte;
}
  if(cab==NULL)
	  cout<<"\n        no hay utils :(";

  getch();
  }

  ///////////////////////////////////////////////////////////////////////////////////////////

  

  util* listautil::buscar(char cod[]){

  util *temp=cab;

  while(temp!=NULL){
		            /* if(strcmp(temp->codigo,cod)==0)*/
		 if(atoi(temp->codigo)==atoi(cod))
		return temp;

		temp=temp->sgte;

	}

	return NULL;
  }


////////////////////////////////////////////////////////////////////////////////////////////////////



	  void listautil::mostrarutil()//MUESTRA UN UTIL ESPECIFICO
 {

  char cod[10];
  util *pos;

  cout<<"\n ingrese codigo a buscar : ";
  fflush(stdin);
  cin>>cod;
  pos=buscar(cod);
  if(pos!=NULL)
	pos->presentar();

  else
	 cout<<"codigo no existe";

	 getch();

	 }


  listautil::~listautil(){
	util* temp;
	util* ant;

	temp=new util();
	ant=new util();
	ant=cab;
	 temp = cab->sgte;
	 while(temp!=NULL)
	  {


		  delete ant;
			  ant = temp;
			temp=temp->sgte;

	  }

	  cout<<"\n\n Lista completa borrada.";



  }


//////////////////////////////////////////////////////////////////////////////

  void proceso(listautil &LU){
	int op;

	do{
	clrscr();
	cout<<"\tMENU:\n";
	cout<<"\n1. Agregar un util escolar";
	cout<<"\n2. Presentar todOS LOS UTILES";
	cout<<"\n3. Mostra un util escolar especifico";
	cout<<"\n4. Salir";
	cout<<"\n  Ingrese opcion:";
	cin>>op;


	switch(op){
	case 1:opcion_agregar_un_util(LU);
				break;
	case 2:  LU.presenta();break;

	case 3:LU.mostrarutil();break;

	}
	}while(!(op==4));

 }


/////////////////////////////////////////////////////////////////////////////////////////////////

 int main(){
  clrscr();


  listautil LU;



 proceso(LU);
  getch();
  return 0;
 }



 ....que opinan ustedes

SALUDOS


Más información sobre la lista de distribución Cconclase