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)