我想编写一个从 char 数组中提取数据的函数,该数组包含由前缀(例如 "type="
)和后缀(例如 ","
指定的数据) )。我很难使用 strstr 和指针算术,所以我认为发布我编写该函数的尝试是没有意义的。我希望函数体看起来像这样:
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=", ",");
您能告诉我实现此功能的正确方法吗?我想这并不太复杂,我只是卡在某个地方...谢谢你的关心。
最佳答案
以下建议代码:
- 假设“output[]”数组足够长以容纳结果+1
- 假设“output[]”不包含字符串“start[]”或“end[]”
警告:这未经测试
警告:“output[]”中生成的 char 数组不是 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
关于c - 从由前缀和后缀指定的字符数组中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47695643/