Why segmentation fault ?
typedef struct user {
    char name[MAX_NAME];
    char profile_pic[MAX_NAME];  // This is a *filename*, not the file contents.
    struct post *first_post;
    struct user *friends[MAX_FRIENDS];
    struct user *next;
} User;

int print_user(const User *user) {
    FILE *file_ptr = fopen(user->profile_pic, "r");
    char *profile_img_char= malloc(sizeof(char *));
    while(fread(profile_img_char, sizeof(char), 1, file_ptr) != 0) {
        printf("%s", profile_img_char);
    }
    fclose(file_ptr);
}