Допустим, у нас есть строка слов, разделенных запятой.
Я хочу написать код на C для хранения этих слов в переменной.
Пример
amazon, google, facebook, twitter, salesforce, sfb
Мы не знаем, сколько слов присутствует.
Если бы я делал это в C, я думал, что мне нужно сделать 2 итерации.
Первая итерация, я считаю, сколько слов присутствует.
Затем на следующей итерации я сохраняю каждое слово.
Step 1: 1st loop -- count number of words
....
....
//End 1st loop. num_words is set.
Step 2:
// Do malloc using num_words.
char **array = (char**)malloc(num_words* sizeof(char*));
Step 3: 2nd loop -- Store each word.
// First, walk until the delimiter and determine the length of the word
// Once len_word is determined, do malloc
*array= (char*)malloc(len_word * sizeof(char));
// And then store the word to it
// Do this for all words and then the 2nd loop terminates
Можно ли сделать это более эффективно?
Я не люблю иметь 2 петли. Я думаю, что должен быть способ сделать это в 1 цикле только с простыми указателями.
Единственное ограничение заключается в том, что это должно быть сделано в C (из-за ограничений, которые не находятся под моим контролем)