PDA

View Full Version : aiuto error SIGABRT


Sethrian
08-04-2010, 08:27
struct indirizzi{
char link[300];
char *nome;
indirizzi *next;

};

class Analizza {
public:
virtual int stampa() = 0;
virtual int trovalink (char *tipo , char *nomefile)= 0;
virtual void cancella(indirizzi *dacancellare) = 0;
virtual indirizzi* RetFirst() = 0;
private:

};


class Agenzia1 : public Analizza
{
private:
indirizzi *first;
indirizzi *Indirizzo;
short step;
unsigned int begin[3];
unsigned int end[3];
public:
int stampa();
Agenzia1();
Agenzia1(const Analizza& orig);
~Agenzia1();
int trovalink (char *tipo , char *nomefile);
void cancella(indirizzi *dacancellare);
indirizzi* RetFirst();

};


int Agenzia1::trovalink(char *tipo , char *nomefile) {
FILE * pFile;
char buffer[100];
char *indirizzo;
int leght;
pFile = fopen ( nomefile , "r" );
if (pFile==NULL) {fputs ("File error",stderr);return 1;}

// obtain file size:
fseek (pFile , this->begin[this->step] , SEEK_SET); //4558 per il primo step
//lSize = ftell (pFile);

do{
fscanf (pFile,"%s",&buffer);
leght = strlen(buffer);
for (int i = 0 ; i < leght ; i++)
{
if(buffer[i]=='h'){
if(buffer[i+1]=='r'){
if(buffer[i+2]=='e'){
if(buffer[i+3]=='f'){
//strcpy(this->Indirizzo->link, buffer);
indirizzo = new char[leght -7 ];
for (int k = 6,i=0; k< leght-1; k++,i++){
if (buffer[k]=='\"' || buffer[k]=='\'')break;
indirizzo[i] = buffer[k];
}
//this->Indirizzo->link = new char[leght -7 ];
strcpy (this->Indirizzo->link ,indirizzo);
this->Indirizzo->next = new indirizzi;
this->Indirizzo = this->Indirizzo->next;
this->Indirizzo->next = NULL;
delete indirizzo;
break;
}
}
}
}
else break;

}

}while (ftell (pFile)< this->end[this->step] && !feof(pFile)); //7281 per il primo step
fclose (pFile);

return 1;
}

ok la spiego.
questa funzione apre il file (una pagina html in locale) e lo legge da un determinato punto alla ricerca di tutti i link fino a un altro determinato punto e li salva in una struttura.(Indirizzo all'interno della classe č un puntatore alla struttura indirizzi nel quale vengono salvati i link) se non che a un certo numero di ripetizioni che varia da tante a poche... (tipo da 6 e 53 pių o meno) ricevo quell'errore e il programma termina..

secondo voi quale č il problema? non sono riuscito a trovare niente di utile in internet...


edit: ide netbeans compilatore gcc ma ho provato a cnhe su win con ide visual studio express e l'errore li risultavastack_overbuff encurred mi pare qualcosa del genere..

Sethrian
08-04-2010, 13:22
up ^^:D con fiducia!! dai ragazzi non ci credo che non abbiate mai avuto un errore del genere!! pleaseeeeeeeeee

maulattu
08-04-2010, 18:18
fscanf (pFile,"%s",&buffer);

Cosė a colpo d'occhio devi levare "&" --> lascia solo "buffer"

maulattu
08-04-2010, 18:24
PS: dai una sistemata al codice, sia a livello di indentazione che di struttura logica, altrimenti vai a finire che tra 2 mesi lo riprendi in mano e non ci capisci pių una ceppa ;)
Altro consiglio: visto che usi C++, usa l'header "<string>" (e le string), cosė eviti pippe mentali su strlen, finestringa, buffer overflow &c