gpt4 book ai didi

c - 将字符串解析为单独的元素

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:07 24 4
gpt4 key购买 nike

海湾合作委员会 4.6.2c89

我只是想知道这是否是解析字符串以从该 sdp 字符串中获取单个元素的好方法。

这是字符串:

"v=0\no=sjphone 853596844 1765236571 IN IP4 10.10.10.10\ns=-\nc=IN IP4 10.10.10.10\nt=0 0\nm=audio 19112 RTP/AVP 8\na=rtpmap:8 PCMA/8000\na=ptime:20\n"

我想像这样把它分开:

v=0
o=sjphone 853596844 1765236571 IN IP4 10.10.10.10
s=-
c=IN IP4 10.10.10.10
t=0 0
m=audio 19112 RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=ptime:20

这是我的代码:

void parse_sdp_string(const char *sdp_string)
{
#define MAX_NUM_ELEMENTS 16
char elements[MAX_NUM_ELEMENTS][MAX_STRING_LEN] = {{0}};
apr_size_t element_count = 0;
apr_size_t i = 0;
apr_size_t k = 0;

char sdp_str[MAX_NUM_ELEMENTS * MAX_STRING_LEN] = {0};
char *search_str = NULL;

/* Copy the string as to not corrupt the original */
apr_cpystrn(sdp_str, sdp_string, sizeof sdp_str);
search_str = sdp_str;

/* Find the last carriage return to compare that we are at the last one */
char *end_ptr = strrchr(search_str, '\n');

/* Increment until you find a carriage return */
while(*search_str != '\0') {
/* Fill the element in the array */
elements[i][k++] = *search_str;
search_str++;

/* nul terminate and reset before starting copy next element */
if(*search_str == '\n') {
elements[i][++k] = '\0';
/* Next element */
i++;
/* Set back to zero to copy from */
k = 0;

/* Check that we are not at the last '\n' */
if(search_str == end_ptr) {
/* This is the end, record the number of elements copied */
element_count = i;
break;
}

/* skip over the current \n as we don't need to copy that */
search_str++;
}
}
}

非常感谢您的任何建议,

最佳答案

我会考虑使用 strtok() .它将为您节省大量代码。

关于c - 将字符串解析为单独的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8705015/

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