[C] Dynamiczna alokacja pamięci
: 15 gru 2010, o 10:53
Witam mam napisac program ktory będzie usuwał ostatni element stringa a następnie wypisywał za każdym razem reszte stringa. (mam nadzieje że wiadomo ocb) Oto moj kod:
Problem tkwi w tym że kiedy się poda troche dłuższy string (czyt. np kilkanaście znaków) to aprocz tego stringu program wyświetla jeszcze jakies krzaki które to one najpierw są usuwane. Gdzie leży błąd? Sam nie moge go znaleźć.
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
#define N 128
void deleteLastChar(char** s)
{
char *wsk;
int i, j, rozmiar = 0;
for(i = 0; (*s)[i] != '\0'; i++)
rozmiar++;
wsk = (char*)malloc(rozmiar);
for(j = 0; j < rozmiar-1; j++)
wsk[j] = (*s)[j];
wsk[rozmiar-1] = '\0';
free(*s);
*s = wsk;
puts(*s);
}
int main(int argc, char *argv[])
{
int i, rozmiar = 0;
char tab[N];
char *napis;
fgets(tab, sizeof(tab), stdin);
for(i = 0; tab[i] != '\0'; i++)
rozmiar++;
napis = (char*)malloc(rozmiar);
for(i = 0; tab[i] != '\0'; i++)
napis[i] = tab[i];
for(i = 0; *napis != '\0'; i++)
deleteLastChar(&napis);
system("PAUSE");
return 0;
}