Por favor usa el resaltado de código.
La razón de por que no funciona es por que cin lee los números y en cuanto se da cuenta que ya no hay nada mas que procesar se detiene y no termina de consumir los enter o espacios en blanco que hayas dejado.
Lo que tienes que hacer es leer una linea y después procesar el numero que hay en esa linea.
Algunos consejos:
1. No uses conio, es viejo, no es estándar, no te va a servir para nada y no hay nada que no puedas hacer con la ayuda de mejores librerias.
2. Probablemente estés usando algún sabor de Borland, te recomiendo no hacerlo. Haz uso de otro compilador. Si estas en windows te recomiendo code blocks + mingw es muy fácil de usar e instalar.
http://www.codeblocks.org/downloads recuerda bajar la versión con mingw.
Código C++:
Ver original#include <iostream>
#include <sstream>
using namespace std;
int main()
{
cout << "*DATOS PERSONALES DE N PERSONAS*";
int N;
char NOM[30];
char DIR[40];
char TEL[12];
char line[10];
cout << "\n\n\nIngrese el numero de personas: ";
cin.getline(line, 10);
istringstream iss( line );
iss >> N;
int i;
for (i = 1; i < N + 1; i ++)
{
cout << "\n\nIngrese los datos personales";
cout << "\n\nNombre: ";
cin.getline(NOM, 30);
cout << "\nDireccion: ";
cin.getline(DIR, 40);
cout << "\nTelefono: ";
cin.getline(TEL, 12);
}
return 0;
}