我想编写一个从char数组中提取数据的函数,该数组包含由prefix(例如"type="
)和后缀(例如","
)指定的数据。我很难使用strstr
和指针arythmetics,所以我认为发布我写这个函数的尝试是没有意义的。我希望函数体看起来像这样:
void extract_string(char input[], char output[], char start[], end[]) {
...
}
并调用函数(带参数)如下所示:
// extracting type and nickname
char message[128] = "type=client_information,port=6666,hostname=127.0.0.1,nickname=stack,";
char type[32];
char nickname[32];
extract_string(message, type, "type=", ",");
extract_string(message, nickname, "nickname=", ",");
您能告诉我实施此功能的正确方法吗?它认为这不是太复杂,我只是卡在某处...感谢您的关注。
答案 0 :(得分:0)
以下提议的代码:
警告:这未经过测试
警告:'输出[]'中产生的字符数组不是NUL终止所以调用代码(可能)应该预先将该数组初始化为所有' \ 0'
void extract_string(char input[], char output[], char start[], end[])
{
char *startPos = strstr( input, start );
if( !startPos )
{
fprintf( stderr, " %s not found in %s\n", start, input );
return;
}
startPos += strlen( start );
char *stopPos = strstr( startPos, end );
if( !stopPos )
{
fprintf( stderr, " %s not found in %s\n", end, startPos );
return;
}
memcpy( output, startPos, stopPos - startPos +1 );
} // end function: extract_string