Ayuda con arrays dinámicos

Laura
12 de Marzo del 2006
Hola.
Tengo un problema con este programa.
Creo que estoy implementando mal los arrays dinámicos pero no sé como corregirlo, o tal vez esté mal implementado el void que agregué.
Por favor si alguien me lo corrige les agradeceré.

/* Programa factor_primo2.c */
#include <stdio.h>
#include <stdlib.h>
void main() {
int dato1, fact=2, dato2, dato3, i=0, k;
shot int estado1=1, estado2=1;
int* fact_prim=(int*) malloc (1*sizeof(int));
int* coc_fact=(int*) malloc (1*sizeof(int));
puts("********** FACTORES PRIMOS 2 **********");
printf("Ingrese un número entero: "); scanf("%10d", &dato1);
if(dato1>) {
put("nDato no válido");
else {
while(dato1>1) {
if(dato1%fact==0) {
dato2=dato1; dato1/=fact; dato3=dato2/fact;
if(estado1) {
fact_prim[0]=fact; coc_fact[0]=dato3; estado1=0;
}
else {
i++;
fact_prim=(int*) relloc (fact_prim,i); coc_fact=(int*) relloc (coc_fact,i);
if(fact_prim==NULL || coc_fact==NULL) {
puts("nMemoria agotada"); estado2=0; break;
}
fact_prim[i]=fact; coc_fact[i]=dato3;
}
}
else
fact++;
}
if(estado2) {
printf("nNúmero ingresado: %10d",dato1);
printf("nFactores primos: %d",fact_prim[0]);
for(k=1;k<=i;k++)
printf("t%d",fact_prim[k]);
printf("nCocientes de factorización: %d",coc_fact[0]);
for(k=1;k<=i;k++)
printf("t%d",coc_factk]);
}
}
for(k=0;k<=i;k++) {
free(fact_prim[k]);
free(coc_fact[k]);
}
getch();
}

Otra duda con otro código:
¿Como hago para que la "ñ" y los acentos salgan correctamente en la salida?. Según lo que leí en un libro, la ñ corresponde al símbolo A4 en hexadecimal del código ASCII y se implementa en C así:
Defino una variable: char enie='xA4';
Luego coloco en printf("A%so: %d", enie, v);

Por lo que en la salida me debería salir asi:
Año: 2006

pero no sale, el compilador me tira error (uso el Dev-C++)
El código que estoy haciendo es éste:
/* Programa pascua1.c */
#include <stdio.h>
int main() {
int anio, a, b, c, d, e, t, u;
const char ENIE='xA4' /* A4 es el valor hexadecimal de "ñ" en ASCII*/
puts("********** PASCUA I **********");
printf("Ingrese el a%so: ",ENIE); scanf("%4d", &anio);
if (anio >= 1582 && anio <= 2100) {
a=anio%19; d=(19*a+24)%30; b=anio&4; c=anio%7; e=(2*b+4*c+6*d+5)%7;
t=d+e+22;
if (t <= 31)
printf("nA%so: %4d Pascua: %d de Marzon",ENIE,anio,t);
else {
u=(d+e)-9; printf("nA%so: %4d Pascua: %d de Abriln",ENIE,anio,u);
}
}
else
printf("A%so fuera del calendario gregoriano", ENIE);
getch();
return 0;
}

Bueno, espero que alguien dé alguna solución. Muchas gracias desde ya.