Przejdę od razu do rzeczy. Przy kompilacji wyskakuje mi błąd w linijce przy "free(tab)". Męczę się z tym już parę godzin i przydałaby mi się jakaś wskazówka. Próbuję odczytać liczby z pliku, posortować je rosnąco i wyświetlić na ekranie. Dopiero zaczynam przygodę z C więc proszę o wyrozumiałość.
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *tab, n,x;
FILE *f;
f = fopen("plik.txt", "r"); //otwieram plik
fscanf(f,"%d", &n); //wczytuje pierwsza liczbe, ktora okresla ile jest kolejnych liczb (w tym wypadku w pliku jest 4 5 7 1 2)
tab = (int *)calloc(n, sizeof(int)); //alokuje sobie pamiec pod tablice
if (tab == NULL)
{
printf("Nie mozna przydzielic pamieci.\n");
return -1;
}
for (int i = 0; i<n; i++) //wczytuje kolejne liczby do tablicy
{
fscanf(f, "%d", &x);
tab[i] = x;
}
int z;
for (int j = 0; j < n; j++)
{
for (int i = 0; i < n; i++) //porzadkuje liczby rosnaco
{
if (tab[i] > tab[i + 1])
{
z = tab[i];
tab[i] = tab[i + 1];
tab[i + 1] = z;
}
}
}
for (int i = 0; i < n; i++) //wypisuje uporzadkowane liczby na ekran
printf("%d", tab[i]);
free(tab); //podczas kompilacji tu mi wyskakuje error.
fclose(f);
system("PAUSE");
return 0;
}