gpt4 book ai didi

c - 从由前缀和后缀指定的字符数组中提取字符串

转载 作者:行者123 更新时间:2023-11-30 21:38:45 24 4
gpt4 key购买 nike

我想编写一个从 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=", ",");

您能告诉我实现此功能的正确方法吗?我想这并不太复杂,我只是卡在某个地方...谢谢你的关心。

最佳答案

以下建议代码:

  1. 假设“output[]”数组足够长以容纳结果+1
  2. 假设“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com