I've seen a few examples of returning array from function on stackoverflow. I followed those examples but i am still getting warnings.
#include <stdio.h>
#include <stdlib.h>
char * getNum();
int main(){
    int * num;
    int * i;
    num = getNum();
    puts(num);
    return 0;
}
char * getNum(){
    FILE * fp;
    fp = fopen("number", "r");      //getting a 1000 digit number from a file
    char * n;                       //putting it in "array"
    n = (char *)malloc(1000 * sizeof(char));
    char x[100];
    int i, j = 0;
    while(!feof(fp)){
        fgets(x, 100, fp);
        for(i=0; i<50; i++){        //getting the first 50 characters in a line
            n[j] = x[i];            //to avoid "new line"
            j++;
        }
    }
    fclose(fp);
    n[1000] = '\0';
    return n;
}
puts(num) gives the right number should I just ignore the warnings? 
Why are they popping up? 
I hope this isn't considered a duplicat.
cc     8.c   -o 8
8.c: In function ‘main’:
8.c:11:9: warning: assignment from incompatible pointer type
     num = getNum();
         ^
8.c:12:10: warning: passing argument 1 of ‘puts’ from incompatible pointer type
     puts(num);
          ^
In file included from 8.c:1:0:
/usr/include/stdio.h:695:12: note: expected ‘const char *’ but argument is of type ‘int *’
 extern int puts (const char *__s);
            ^