Массив строк получает шифрование после выхода из цикла strtok - C - PullRequest
1 голос
/ 25 апреля 2019

У меня есть такой текстовый файл:

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 

Как видите, часть содержимого пуста или слово "обрезано". Я что-то упустил?

...