Следующая строка:
p_params->listData[i] = *result
берет первый символ result
и копирует его в i
th символ p_params->listData
. Таким образом, копируется только первый символ каждого токена. Как вы ожидаете получить эти токены как одну последовательность element01element02element03element04element05 или как массив строк?
Имейте в виду, что в C и C ++ массив символов содержит только одну строку, проще говоря. Чтобы содержать более одной строки, вам нужен массив массивов символов или некоторый разделитель (с которого вы начали ...).
Edit:
Если вы хотите получить массив строк, вы можете использовать следующее: объявлять listData
как
char* listData[10];
, что означает listData
, теперь может содержать до 10 строк. Затем вместо присвоения *result
listData[i]
используйте следующее:
p_params->listData[i] = strdup(result);
, которая создаст копию строки и сохранит ее в следующей записи.
Примечание:
- Если вы хотите отобразить строки, вам придется повторить цикл и распечатать их одну за другой. Вы не можете просто напечатать весь их массив.
strdup
выделяет память для вас. Вы должны free()
эти строки, когда вы закончите с ними.
- Ваш код использует магические числа, что плохо. Я предполагаю, что это только для того, чтобы было легче читать здесь;)
- Если вы получите более 10 элементов, вы получите переполнение буфера, потому что
listData
может содержать только до 10 строк. Вы должны по крайней мере убедиться, что i
не превышает 9 в while
или около того.