I'm from the Python/JS world, so I'm having issues wrapping my head around strings and arrays in C.
I'm attempting to create a struct -- FileInfo -- which contains a 2D array so that I can store a number of email addresses. I have a function -- createFileInfo() -- which creates the struct, manages memory for the struct and array indexes, assigns an email address to the array, and returns a pointer to the struct:
typedef struct FileInfo {
    char **emailArr;
} FileInfo;
FileInfo *createFileInfo(int count) {
    FileInfo *fi = malloc(sizeof(FileInfo));
    char *buffer;
    char *emailPrefix = "test";
    char *emailDomain = "@test.com";
    for (int i=0; i<count; ++i) {
        fi->emailArr[i] = malloc(count * sizeof(char));
    }
    snprintf(buffer, sizeof(char), "%s%s", emailPrefix, emailDomain);
    for (int i=0; i<count; ++i) {
        for(int j=0; j<count; ++j) {
            fi->emailArr[i][j] = *buffer;
        }
    }
    return fi;
}
Then, in my main() function, I'm trying to create a pointer to the struct and print the index that contains the email address. However, I cannot get the string to print. 
int main() {
    int count = 1;
    FileInfo *fi = createFileInfo(count);
    for (int i=0; i<count; ++i) {
        for(int j=0; j<count; ++j) {
            fprintf(stdout, "test %s\n", fi->emailArr[i][j]);
        }
    }
    for (int i=0; i<count; ++i) {
        free(fi->emailArr[i]);
    }
    free(fi);
    return 0;
}
What am I doing incorrectly? I'm also having quite the time with memory management; is memory allocation the issue?
 
     
     
    