Я хочу реализовать функцию, которая разлагает данную строку. но я не уверен, как go об этом. любая помощь приветствуется.
/* Parses *str and creates a new StringBundle object containing the
* separate fields of *str.
*
* Pre: str points to a GIS record string, properly terminated
*
* Returns: a pointer to a new proper StringBundle object
*/
StringBundle* createStringBundle(const char* const str){
}
например, эта строка разделена '|':
901051|Becker|Locale|NM|35|Eddy|015|322833N|1040812W|32.4759521|-104.1366141|||||959|3146|
Carlsbad East|11/01/1992|
Я хочу разбить ее на набор строк, некоторые из которых могут быть пустыми.
0 901051
1 Becker
2 Locale
3 NM
4 35
5 Eddy
6 015
7 322833N
8 1040812W
9 32.4759521
10 -104.1366141
11
12
13
14
15 959
16 3146
17 Carlsbad East
18 11/01/1992
19
И я использую пакет структурной строки
/** A StringBundle contains an array of nTokens pointers to properly-
* terminated C strings (char arrays).
*
* A StringBundle is said to be proper if:
* -Tokens == NULL and nTokens == 0
* or
* -nTokens > 0 and Tokens points to an array of nTokens char pointers,
* -each char pointer points to a char array of minimum size to hold
* its string, including the terminator (no wasted space)
*/
struct _StringBundle {
char** Tokens; // pointer to dynamically-allocated array of char*
uint32_t nTokens; // dimension of array pointed to by Tokens
};
Поле Tokens
является char**
, поскольку оно указывает на первый элемент в массиве char*
переменных.
Я могу использовать любую из этих c библиотечных функций: mallo c (), callo c (), reallo c (), free (), strncpy (), memcpy (), strlen (), sscanf ().