Salve a tutti sono un utente nuovo di questo forum e anche un novizio della programmazione in C++. Per imparare a gestire puntatori a record ho scritto questo codice molto semplice in allocazione statica (per farla breve tale codice mi dovrebbe permettere di inserire e stampare un vettore formato da alcuni dati anagrafici di una persona) :
codice:
#include <cstdlib>
#include <iostream>
using namespace std;
const int dim=100;
typedef char stringa[dim]; //alias stringa di dimensione dim di tipo carattere
//creazione struttura di tipo persona
struct persona
{
stringa nome;
stringa cognome;
int eta;
};
typedef persona p[dim];
int main(int argc, char *argv[])
{
persona *punt=0; //dichiarazione puntatore ad elementi di tipo persona
p v; // vettore di tipo persona
int i,n;
cout<<"inserire riempimento\n";
cin>>n;
cout<<"inserire campi\n";
for(punt=v,i=0;i<n;i++,punt++)
{
cout<<"inserire nome\n";
cin.getline(punt->nome,dim+1);
cin.ignore();
cout<<"inserire cognome\n";
cin.getline(punt->cognome,dim+1);
cin.ignore();
cout<<"inserire eta'\n";
cin>>punt->eta;
}
cout<<"stampa vettore\n";
for(punt=v,i=0;i<n;i++,punt++)
{
cout<<punt->nome<<endl;
cout<<punt->cognome<<endl;
cout<<punt->eta<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
Il codice viene compilato e l'esecuzione fila liscia finchè all'atto dell'inserimento dell'età non mi viene data tale possibilità; inoltre all'atto della stampa mi visualizza solo il campo nome con l'eccezzione della prima lettera che mi viene "mangiata". Qualcuno potrebbe aiutarmi? P.S: so l'esistenza della libreria "string.h" ma per ora vorrei evitare di usarla. Grazie mille a tutti per le risposte