[C con Clase] fatal error LNK1136: invalid or corrupt file
Pedro Osorio
pedroosorio777 en gmail.com
Sab Abr 16 03:27:35 CEST 2011
Hola. Yo uso tambien visual C++ 6.0, y el programa tuyo me funciona
muy bien. Sólo debo comentar los clrscr y listo.
Te recomiendo que reinstales visual c++ 6.0 o quizas te falte algun
service pack de visual.
2011/4/15, wolverine_ch <wolverine_ch en hotmail.com>:
> 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
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
Más información sobre la lista de distribución Cconclase