Alokacja dynamicznej pamieci dla tablicy znakowej

0

Chce stworzyc prosty program, ktory alokuje pamiec na podana przez uzytkownika ilosc znakow a nastepnie, alkoujacy pamięć na tablicę znakową . Na koncu chce po prostu wyswietlic ją. Nie działa to poprawnie , co tutaj jest źle bo nie moge dociec ? Program dziwnie sie zachowuje :

 #include <stdio.h> 
#include <stdlib.h>



int main (){


char *napis;
int *rozmiar;
int ilosc,i;


printf (" \n \n \n Podaj ilosc znakow ktore chcesz wczytac \n ");

scanf("%d",&ilosc);
rozmiar=&ilosc;


napis = (char *)malloc( (*rozmiar)*sizeof(char)) ;

printf("Zaalokowano %d  bajtow \n ", sizeof(napis));



for(i=0;i<*rozmiar;i++){
printf("podaj %d znak \n ",i+1);

scanf("%c", (napis+i) );

}


printf("Zaczynamy wyswietlanie tego : ");

for(i=0;i<*rozmiar;i++){

printf(" %c ", *(napis+i) );
}


free(napis);

  return 0; 

}
0
scanf("%d",&ilosc);
napis = (char *)malloc((ilosc+1)*sizeof(char)) ; 
printf("Zaalokowano %d  bajtow \n ",ilosc);
for(i=0;i<ilosc;++i)
  {
   printf("podaj %d znak: ",i+1); 
   scanf("%c",(napis+i)); 
}
napis[ilosc]=0;
printf("Zaczynamy wyswietlanie tego \"%s\"",napis);
0
_13th_Dragon napisał(a):
scanf("%d",&ilosc);
napis = (char *)malloc((ilosc+1)*sizeof(char)) ; 
printf("Zaalokowano %d  bajtow \n ",ilosc);
for(i=0;i<ilosc;++i)
  {
   printf("podaj %d znak: ",i+1); 
   scanf("%c",(napis+i)); 
}
napis[ilosc]=0;
printf("Zaczynamy wyswietlanie tego \"%s\"",napis);

Ok, zapomniałem na dodanie tego +1 , natomiast program nadal nie działa poprawnie , tak zachowuje sie po wywołąniu :

Podaj ilosc znakow ktore chcesz wczytac
5
podaj 1 znak
podaj 2 znak
a
podaj 3 znak
podaj 4 znak
b
podaj 5 znak
Zaczynamy wyswietlanie tego :
a
b

Pomija co drugi znak nie wiem dlaczego , no i są znaki nowej linii wczytane pomiędzy kolejnymi literami

1 użytkowników online, w tym zalogowanych: 0, gości: 1