|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
[C++] Errore a run time...
Salve a tutti. Questa è il codice che mi crea problemi
[code] #include <iostream> #include <cstring> #include <string> using namespace std; const int dim = 80; struct ind { char nome [dim]; char cognome [dim]; char email [dim]; }; int main () { int num; int x = 0; ind dati[num]; cout <<"Inserisci numero di indici: "; cin >> x; cout <<"*** FASE COMPILAZIONE DELLA LISTA INVITATI ***" <<endl; for (num = 0; num < x; num++) { cout <<"Inserire nome: "; cin >> dati[num].nome; cout <<"Inserire cognome: "; cin >> dati[num].cognome; cout <<"Inserire email: "; cin >> dati[num].email; } return 0; } [\CODE] è solo un semplice esercizio sugli array di struct. Il problema è che in fase di compilazione non mi da nessun problema. Appena avvio il programma mi da errore di sistema. Utilizzo NetBeans. Ho provato anche a utilizzare code blocks e dev C++. Tutti quanti mi danno lo stesso problema. Ho provato pure a fare un debug con dev C++ e mi dice "Errore di segmentazione" ma non capisco cosa sia. Spero possiate aiutarmi. Grazie! |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
Scusate ecco il codice:
Codice:
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
const int dim = 80;
struct ind {
char nome [dim];
char cognome [dim];
char email [dim];
};
int main ()
{
int num;
int x = 0;
ind dati[num];
cout <<"Inserisci numero di indici: ";
cin >> x;
cout <<"*** FASE COMPILAZIONE DELLA LISTA INVITATI ***" <<endl;
for (num = 0; num < x; num++)
{
cout <<"Inserire nome: ";
cin >> dati[num].nome;
cout <<"Inserire cognome: ";
cin >> dati[num].cognome;
cout <<"Inserire email: ";
cin >> dati[num].email;
}
return 0;
}
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6396
|
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 376
|
devi inizializzare num altrimenti non sa la dimensione dell'array dati
Codice:
[...]
int main ()
{
int num;
int x = 0;
ind dati[num];
cout <<"Inserisci numero di indici: ";
cin >> x;
// qui metti un controllo per far sapere che x deve essere minore di num
cout <<"*** FASE COMPILAZIONE DELLA LISTA INVITATI ***" <<endl;
for (num = 0; num < x; num++)
{
cout <<"Inserire nome: ";
cin >> dati[num].nome;
cout <<"Inserire cognome: ";
cin >> dati[num].cognome;
cout <<"Inserire email: ";
cin >> dati[num].email;
}
return 0;
}
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
c ho già provato poi mi sn accorto che num viene già inizializzato nel ciclo for .. Nello specifico:
=> per x = 2; => mi fa inserire nome, cognome, email per il primo ciclo e solo nome e cognome per il secondo ciclo... quando è il momento di inserire l'email mi da errore di sistema. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6396
|
Quote:
Codice:
ind dati[num]; Inoltre rischi comunque di sforare l'array in quanto se ad esempio num=10 e l'x inserito vale 20, fai troppi cicli uscendo dal range di dati[]. Devi controllare che l'x inserito non sia più grande di num-1, dopo aver inizializzato num prima dell'allocazione ovviamente.. Ultima modifica di Unrue : 06-02-2010 alle 15:56. |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
quindi Unrue intendi:
Codice:
int num = 0;
int x = 0;
ind dati[num];
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6396
|
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Apr 2006
Messaggi: 264
|
ok ho risolto... grz mille dell'aiuto a tutti .. a presto
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:05.




















