首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sscanf解析字符串

使用sscanf解析字符串
EN

Stack Overflow用户
提问于 2012-01-04 15:06:12
回答 2查看 6.4K关注 0票数 3

在C89模式下使用gcc (GCC) 4.6.2。

我想知道我的sscanf是否被正确实现了?

我尝试从元素中包含的SDP字符串中仅获取端口号,端口号为'49462‘。

代码语言:javascript
复制
m=audio 49462 RTP/AVP 0 8

我像这样使用sscanf

代码语言:javascript
复制
sscanf(element, "%*s %d", &sdp.audio_port);

因此,它将忽略第一个字符串部分'm=audio‘,然后获取端口号,这就是我想要的。

可以忽略端口号后字符串的最后部分。实际上,可以指定更多的音频格式,例如0 8 94 101等,因此可以验证字符串长度。然而,它只是我感兴趣的音频端口,而不是其他。

我是否需要为字符串的其余部分指定任何格式?

我遇到了一些内存问题,我想知道这是否可能是原因。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-04 15:13:44

我在Codepad.org上运行了以下代码,它工作得很好。

代码语言:javascript
复制
#include<stdio.h>

int main()
{
char *element= "m=audio 49462 RTP/AVP 0 8";

int num;
sscanf(element, "%*s %d", &num);

printf("%d\n",num);
return 0;
}

也许正如您所描述的,在其他地方有一个Run Time Error阻止了有效代码片段的预期输出。

票数 3
EN

Stack Overflow用户

发布于 2012-01-04 15:09:24

你写的东西看起来不错。不需要指定字符串中您没有解析的部分中的内容。当然,您应该检查sscanf()的返回值,以确保您实际上成功转换了一个值:

代码语言:javascript
复制
if (sscanf(element, "%*s %d", &sdp.audioport) != 1)
    ...process error...
else
    ...use sdp.audioport...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8723224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档