Сортировка пузырьком

Все вопросы можно задавать по адресу staroverovvl@yandex.ru
В качестве программы, работающей с массивом, приведем пример программы, реализующей сортировку пузырьком массива целых чисел.
Сдаваемая программа должна состоять, как минимум, их трех файлов:
- С-файла с функцией, собственно решающей задачу,
- С-файла с функцией main, вызывающей функцию, решающую задачу,
- include-файла с описанием функций, созданных в программе. Созданный include-файл должен быть включен во все C-файлы программы.

Отметим, что ввод массива из файла должен быть оформлен в виде отдельной функции.
Далее содержится пример файлов программы, решающей поставленную задачу.

include-файл с именем fun.h:
void SortB(int *m, int n);
int InputArray(const char *FileName, int **m, int *n);

Файл с функцией сортировки SortB и функцией ввода массива из файла InputArray. Пусть файл имеет имя fun.c:
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include "fun.h"

//следует задуматься о том, что будет с программой
//если в операторе define не написать фигурные скобки
#define SWAP(a,b,t) {(t)=(a);(a)=(b);(b)=(t);}

void SortB(int *m, int n)
{int i,j,t;
 for(i=0;i<n;i++)
  for(j=1;j<n;j++)
   if(m[j-1]>m[j])
    SWAP(m[j-1],m[j],t);
}

int InputArray(const char *FileName, int **m, int *n)
{int I,t,err=0;FILE *f;
 *m=NULL;*n=0;
 for(I=0;I<2;I++)
 {
  if(I==1&&*n>0)
   *m=(int*)malloc(*n*sizeof(int));
  *n=0;
  f=fopen(FileName,"r");
  if(f)
  {
   for(*n=0;fscanf(f,"%d",(I==0?&t:(*m)+(*n)))==1;(*n)++);
  }else {err=-1;break;}
  fclose(f);
 }
return err; 
}


Файл с функцией main с именем main.c:
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include "fun.h"

int main(void)
{
 int err=0,i,*m=NULL,n=0;
 err=InputArray("data.txt",&m,&n);
 if(err==-1)
  printf("Can't open file!!!\n");
 else if(err==0&&n==0)
  printf("File is empty!!!\n");
 else if(err!=0)
  printf("Error!!!\n");
 if(err==0)
  SortB(m,n);
  for(i=0;i<n;i++)printf("m[%d]=%d\n",i,m[i]);
 getchar();//данная функция нужна только для предотвращения  
           //немедленного закрытия программы после запуска из среды
return err;//правилом хорошего тона является наличие только одного оператора return в функции
}

Файл data.txt должен быть создан в той же папке, что и файлы программы. В нем должны быть записаны числа массива через пробел, или по одному в строке.