C/malloc: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Derbeth (dyskusja | edycje)
m →‎Uwagi: "i" zmiękcza "l", nie może być między nimi apostrofu
Lethern (dyskusja | edycje)
→‎Przykład: pooprawki
Linia 30:
 
===Przykład===
<source lang="c">
#include <stdio.h>
#include <stdlibstdio.h>
#include <stdiostdlib.h>
[[C/int|int]] main([[C/void|void]]) {
{
[[C/ size_t|size_t]] size, num = 0;
[[C/ float|float]] *tabtmp, tmp*tab;
//* Przydzielenie początkowego bloku pamięci */
size_t size = 64;
tab = [[C/malloc|malloc]](size * [[C/sizeof|sizeof]] (*tab));
[[C/ if|if]] (!tab)
{
[[C/ perror|perror]]("[[C/malloc|malloc]]");
[[C/ return|return]] [[C/EXIT_FAILURE|EXIT_FAILURE]];
}
 
puts("Podaj liczbe. Wpisanie nie-liczby zakonczy.");
 
/*/ Odczyt liczb */
while (scanf("%f", &tmp) == 1)
}{
//* Jeżeli zapełniono całą tablicę, trzeba ją zwiększyć */
[[C/if| if]] (!ptrnum==size)
{
tab size*= ptr2;
[[C/float| float]] *ptr = [[C/realloc|realloc]](tab, (size *= 2) * [[C/sizeof|sizeof]] (*ptr));
if (!ptr)
} {
[[C/ free|free]](tab);
[[C/ perror|perror]]("[[C/realloc|realloc]]");
[[C/ return|return]] [[C/EXIT_FAILURE|EXIT_FAILURE]];
}
tab[num++] = tmpptr;
}
tab[num]= tmp;
++num;
printf("Ilosc liczb: %d, wielkosc tablicy: %d, podaj liczbe: ", num, size);
}
//* Wypisanie w odwrotnej kolejnosci */
/* Odczyt liczb */
[[C/ while|while]] (scanf("%f", &tmp)==1num)
{
--num;
/* Jeżeli zapełniono całą tablicę, trzeba ją zwiększyć */
[[C/if|if]] printf("%f\n", tab[num==size]) ;
{}
[[C/float|float]] *ptr = [[C/realloc|realloc]](tab, (size *= 2) * [[C/sizeof|sizeof]] *ptr);
[[C/if|if]] (!ptr)
{
[[C/free|free]](tab);
[[C/perror|perror]]("[[C/realloc|realloc]]");
[[C/return|return]] [[C/EXIT_FAILURE|EXIT_FAILURE]];
}
tab = ptr;
}
tab[num++] = tmp;
}
//* Zwolnienie pamieci i zakonczenie programu */
/* Wypisanie w odwrotnej kolejnosci */
[[C/ free|free]](tab);
[[C/while|while]] (num)
[[C/ return|return]] EXIT_SUCCESS;
{
}
[[C/printf|printf]]("%f\n", tab[--num]);
</source>
}
<pre>
Podaj liczbe. Wpisanie nie-liczby zakonczy.
/* Zwolnienie pamieci i zakonczenie programu */
10
[[C/free|free]](tab);
Ilosc liczb: 1, wielkosc tablicy: 4, podaj liczbe: 15
[[C/return|return]] EXIT_SUCCESS;
Ilosc liczb: 2, wielkosc tablicy: 4, podaj liczbe: 30
}
Ilosc liczb: 3, wielkosc tablicy: 4, podaj liczbe: 35
Ilosc liczb: 4, wielkosc tablicy: 4, podaj liczbe: 70
Ilosc liczb: 5, wielkosc tablicy: 8, podaj liczbe: 75
Ilosc liczb: 6, wielkosc tablicy: 8, podaj liczbe:
75.000000
70.000000
35.000000
30.000000
15.000000
10.000000
</pre>
 
===Uwagi===