У меня есть такой текстовый файл:
word 1;word 2;word 3;word 4
word 5;word 6;word 7;word 8
word 9;word 10;word 11;word 12
word 13;word 14;word 15;word 16
И я хочу экспортировать этот файл в массив 2d строк на C. Вот мой код:
char* orders[LineCounter][4];
int i = 0, j;
f = fopen("test.txt","r");
printf("Inside the loop\n");
while (getline(&line, &len, f) != -1) {
j = 0;
char* token = strtok(line,";\n");
while (token != NULL){
orders[i][j] = token;
printf("%s\n", orders[i][j]);
token = strtok(NULL,";\n");
j++;
}
i++;
}
printf("\n\nOutside the loop\n");
for (int k=0;k<LineCounter;k++){
for (int l=0;l<4;l++){
printf("%s ", orders[k][l]);
}
printf("\n");
}
fclose(f);
Как вы можете видеть, я печатаю содержимое массива два раза. Один раз во время цикла strtok и один раз после того, как все закончено. В первый раз все печатается нормально, но когда я печатаю массив после того, как я закончу синтаксический анализ файла, содержимое шифруется следующим образом:
Inside the loop
word 1
word 2
word 3
word 4
word 5
word 6
word 7
word 8
word 9
word 10
word 11
word 12
word 13
word 14
word 15
word 16
Outside the loop
word 13 4 15
word 13 4 15
word 13
word 13 word 14 word 15 word 16
Как видите, часть содержимого пуста или слово "обрезано". Я что-то упустил?