|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 31
|
aiuto error SIGABRT
Codice:
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;
}
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..
__________________
Nocturnal poetry,
Dressed in the whitest silver, you'd smile at me Every night I wait for my sweet... |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2006
Messaggi: 31
|
up ^^
__________________
Nocturnal poetry,
Dressed in the whitest silver, you'd smile at me Every night I wait for my sweet... |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
Codice:
fscanf (pFile,"%s",&buffer);
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
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
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 07:05.


















