Строка в массив — эффективный способ

#arrays #c #string

Вопрос:

Учитывая строку : "A,B,Cn1,2,3n,4,9,6" как я могу преобразовать ее в этот 2D-массив (в C)?

 [A B C  1 2 3   4 9 6]  

Я думал подсчитать количество строк (проверив, сколько n s 1), затем подсчитать количество столбцов (проверив, сколько ',' их 1), а затем выделить 2D-массив. А затем поместить значения в массив.

Есть ли какой-нибудь способ сделать это более эффективным способом? потому что я много раз повторяю одну и ту же строку.

Комментарии:

1. Гарантируется ли, что все строки матрицы будут одинаковой длины?

2. 2 проход безопасен и прост — проход (1) проверяет, что строки имеют одинаковую длину (фиксированное количество столбцов), и подсчитывает количество необходимых строк. Pass (2) заполняет 2D-массив, используя вышеуказанную информацию.

3. Да, все строки одинаковой длины @Botje. Спасибо

4. Вы можете найти эту strtok функцию (или strtok_r , если она доступна) полезной.

5. @RichardCritten из текста ( «…в этот 2D массив (в C):» ) он, по-видимому, хочет C.