I want to read from a csv file with C and then store every token in a 2D string array. It appears that the storing is OK, but when i try to print an element from this array, i get strange stuff. Here is the program :
#include <stdio.h>
#include <string.h>
#define BUFFER_SIZE 256
int main(){
    FILE *testFile = fopen("test.csv", "r");
    char buffer[BUFFER_SIZE];
    char *delim = ",";
    char *lastToken;
    char *holder[50][50];
    int i, i2;
    if(testFile == NULL){
        printf("Error!");
    } else {
    i = 0;
    while(fgets(buffer, BUFFER_SIZE, testFile) != NULL){
        i2 = 0;
        lastToken = strtok(buffer, delim);
        while(lastToken != NULL){
            holder[i][i2] = lastToken;
            printf("holder[%i][%i] - %s\n", i, i2, holder[i][i2]);
            lastToken = strtok(NULL, delim);
            i2++;
        }
        i++;
    }
    fclose(testFile);
    } //if file is opened (endif)
    printf("%s\n", holder[0][2]);
    return 0;
}
The text.csv contents :
1,Beer,first,30
2,Rakija,second,50
3,Whiskey,third,95
When i run the program, i get :
holder[0][0] - 1
holder[0][1] - Beer
holder[0][2] - first
holder[0][3] - 30
holder[1][0] - 2
holder[1][1] - Rakija
holder[1][2] - second
holder[1][3] - 50
holder[2][0] - 3
holder[2][1] - Whiskey
holder[2][2] - third
holder[2][3] - 95
ey
Before returning 0, i try to print holder[0][2]. I should get "first", but what i actually get is just "ey" (probably part from holder[2][1] - Whiskey)