Ho risolto così:
codice:
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;

int main(){

struct dati {
char* nome;
char* cognome;
short int eta;
};

dati dade[10];
char cerca[10];

for(int i=0; i<sizeof(dade); i++){
dade[i].nome=(char*)malloc(sizeof(char)*20);
dade[i].cognome=(char*)malloc(sizeof(char)*20);
}

//Dati di esempio
dade[0].nome= "Davide";
dade[0].cognome= "Cavallini";
dade[0].eta = 25;

dade[1].nome= "Elena";
dade[1].cognome= "Berti";
dade[1].eta = 23;

dade[2].nome= "Sara";
dade[2].cognome= "Tagliapietra";
dade[2].eta = 22;
//


cout << "Cerca: ";
cin.getline(cerca,sizeof(cerca));


for(int a=0; strlen(dade[a].nome)>1; a++){
	if(strncmp(cerca,dade[a].nome, 4)==0 || strncmp(cerca,dade[a].cognome, 4)==0){
		cout << dade[a].nome << " " << dade[a].cognome << " " <<dade[a].eta << endl;
		return main();		
		} 
	}
	cout << "Risultato non trovato"<<endl; ;
	return main();
}