pidele a alguien mas que mire el codigo k yo te di y el que tu escribiste y te dira k no es verdad k es el mismo. Con respecto a como explique en la respuesta donde te puse el código el puntero lo debes declara al inicio del main. Esto es
Código C:
Ver originalint main()
{
registro *datosArreglo =NULL;
...
...
...
return 0;
}
El porque es muy simple. El número de elementos lo puedes determinar, y la cadena es de tipo arreglo y no un puntero, si fuese un puntero no seria posible emplear la forma que te indique arriba.
Si quieres codificar en C Ansi, entoces debes emplear malloc de la siguiente forma
Código C:
Ver originaldatosArreglo
= (registro
*)malloc(sizeof(registro
)*numRegistros
);//el cast es necesario por que malloc regresa un puntero a void*