Входной файл:
s0 0 3 0 10
s1 0 6 0 20
s2 0 5 0 11
s3 0 6 0 20
s4 67 2 0 25
s5 5 4 0 1
s6 0 2 0 5
s7 0 4 0 28
s8 0 3 0 20
s9 45 5 0 6
s10 103 3 0 2
Код:
char ** customers;
char *p;
customers = (char **)malloc(50 * sizeof(char *));
for (int i = 0; i < 50; i ++)
{
customers[i] = (char *)malloc(5 * sizeof(char *));
}
int z = 0;
while ((nread = getline(&line, &len, stream)) != -1)
{
int i = 0;
p = strtok (line, " ");
while (p != NULL)
{
customers[z][i] = *p;
i++;
p = strtok (NULL, " ");
}
z++;
}
printf("%s\n", customers[0]);
По сути, я читаю каждую строку входного txt-файла, разбивая ее на токены с помощью strtok () и сохраняю их в двойной указатель (customer), который работает как 2d-массив, но после выхода из цикла while Я не могу получить доступ к каждому отдельному токену в этом «2d массиве», я могу получить доступ ко всей его строке с помощью
printf(“%s\n”, customers[0])
outputs:
s0301
но при этом печатается только первый символ каждого токена, а не вся строка.
Как я могу получить доступ к полной цепочке токенов, например, вот так
printf(“%s\n”, customers[0][0])
printf(“%s\n”, customers[0][1])
printf(“%s\n”, customers[0][2])
printf(“%s\n”, customers[0][3])
printf(“%s\n”, customers[0][5])
outputs:
s0
0
3
0
10
Любая помощь очень ценится!