程序问答   发布时间:2022-05-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了使用 sscanf 解析 C 中的字符串大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决使用 sscanf 解析 C 中的字符串?

开发过程中遇到使用 sscanf 解析 C 中的字符串的问题如何解决?下面主要结合日常开发的经验,给出你关于使用 sscanf 解析 C 中的字符串的解决方法建议,希望对你解决使用 sscanf 解析 C 中的字符串有所启发或帮助;

我试图解析的字符串叫做 str1,它包含 PRETTY_name="Ubuntu 20.04.1 LTS"

目标是让一个变量包含PRETTY_name,另一个包含Ubuntu 20.04.1 LTS。我已将两个变量声明为 char *var1,*var2

这必须使用 C 中的 sscanf 函数来完成。

我当前的代码看起来像:sscanf(str1,"%s[^=]^s",var1. var2); 我收到的输出是 var1 和 var2 都返回 (null)

我做错了什么?

解决方法

%s 匹配整个字符串以空格或 \0 终止,在这种情况下包括 =,您不能在这里使用它,并且您还没有初始化您的任何char 缓冲区的大小会导致崩溃或未定义的行为。这是一个简化的解析器。

void parse(const char* str,char* pretty,char* releasE) {
    int pretty_end,start,end;
    sscanf(str,"%*[^=]%n=\"%n%*[^\"]%n\"",&pretty_end,&start,&end);
    
    strncpy(pretty,str,pretty_end);
    prettY[pretty_end] = '\0';
    
    strncpy(release,str+start,end-start);
    release[end - start] = '\0';
}

int main() {

    const char* str = "PRETTY_NAME=\"Ubuntu 20.04.1 LTS\"";
    char prettY[256];
    char release[256];
    parse(str,pretty,releasE);

    return 0;
}

大佬总结

以上是大佬教程为你收集整理的使用 sscanf 解析 C 中的字符串全部内容,希望文章能够帮你解决使用 sscanf 解析 C 中的字符串所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。