Witam
Próbuję zrobić program, który będzie automatycznie powiększał tablice (buffer) o 5 kolejnych miejsc, czyli użytkownik będzie wprowadzał liczby i jeśli wprowadzi ich więcej niż 5 to tablica się zwiększy, więc będzie 10 elementowa(tak do nieskończoności co 5). Udało mi się to już osiągnąć, aczkolwiek chce również podzielić cały program na funkcje. Pojawił się tu problem, ponieważ jeśli wyświetlanie dam w funkcji wpisywanie to wszystko działa okej, ale jeśli tak jak tutaj podzieliłem je na dwie osobne to jakby po wykonaniu funkcji wpisywanie w main zmienna "buffer" się nie powiększała, tylko dalej była 5 elementowa. Ma ktoś jakiś pomysł ?
#include <stdio.h>
#include <stdlib.h>
void wpisywanie(size_t rozmiar, int *buffer)
{
size_t maximumLength = rozmiar;
int liczba;
int i = 0; // zmienna sterujaca
while(liczba != 0)
{
printf("Podaj liczbe: ");
scanf("%d", &liczba);
if(i == maximumLength)
{
int *newBuffer = realloc(buffer, (maximumLength = maximumLength + rozmiar) * sizeof (*buffer) );
if (!newBuffer)
{
free(buffer);
perror("blad realloc");
}
buffer = newBuffer;
}
buffer[i++]=liczba;
}
}
void wyswietlanie(int *array)
{
int i = 0;
while(array[i] != 0)
{
printf("%d ",array[i]);
i++;
}
}
int main()
{
const size_t rozmiar = 5; //poczatkowy rozmiar
int *buffer;
buffer = (int*)malloc(rozmiar * sizeof(*buffer));//oblicza potrzebną wielkość tablicy. Dla każdej zmiennej int potrzebujemy tyle bajtów, ile zajmuje ten typ danych
wpisywanie(rozmiar,buffer);
wyswietlanie(buffer);
free(buffer);
return 0;
}