Cześć,
Chciałbym zapytać czy jest możliwe usunięcie tablicy w funkcji a następnie jakby stworzenie jej na nowo ? Próbuje to robić ale całkowicie nie wychodzi, niby usuwam w funkcji wcześniejsze rekordy a ona dalej są na danym adresie. Podsyłam poniżej na czym polega zadanie:
9.2 Napisz funkcję, która zmienia rozmiar tablicy z n-elementowej na m-elementową (nowy wymiar może być mniejszy lub większy od początkowego). Zadanie wymaga stworzenia nowej tablicy i przepisania do niej zawartości starej.
Chciałem zrobić to w ten sposób:
wczytuje tablice array do funkcji, tworzę tablice zastępczą tmp by przechowała mi elementy tablicy, następnie usuwam funkcje array , tworzę ją z powrotem tylko z mniejszą liczbą rekordów, podaną do funkcji i wczytuje elementy do array. Problem w tym, że usuwam pozostałe rekordy tablicy a one nadal są w tablicy.
int* expandArray(int *array, int newSize)
{
int *nowaTablica = malloc(sizeof(int)*newSize);
for(int i = 0; i < newSize; i++)
{
nowaTablica[i] = array[i];
}
free(*array);
*array = NULL;
for(int i = 0; i < newSize; i++)
{
printf("%d ,", nowaTablica[i]);
}
printf("\n");
*array = malloc(sizeof(int)*newSize);
for(int i = 0; i < newSize; i++)
{
array[i] = nowaTablica[i];
}
for(int i = 0; i < newSize; i++)
{
printf("%d ,", array[i]);
}
return array;
}