繁体   English   中英

如何处理C中的换行符和特殊符号的返回值?

[英]How to deal with the return value which are new line and special symbol in C?

这是一个新手的问​​题,我有一个返回值,其中有两个新行和一些特殊符号。

但我只想得到上述值的特定部分。

有一个基于我的代码的简单示例。

当我使用C执行命令时,我会得到返回值的格式,如...

代码:

fp = popen("cfg get+myvalue", "r");
fgets(buf, sizeof(buf), fp); //First Line
fgets(buf, sizeof(buf), fp); // Sec Line

返回值:

get+myvalue
+Value: "123456789"

现在,我已经尝试过 strtok_r()。 它实际上可以分为两部分(+Value: & "123456789")。

但我想知道有没有更有效的方法来获得 123456789 而不用双引号?

我只想取123456789的那部分,有什么好的办法可以解决这个问题吗?

任何意见,将不胜感激。

非常容易使用strchrstrrchr

#include <stdio.h>
#include <string.h>

int main(void)
{
    char str[] = "+Value: & \"123456789\"";
    char *start = NULL, *end = NULL;

    start = strchr(str, '"');
    if (start != NULL)
    {
        end = strrchr(++start, '"');
        if (end != NULL)
        {
            *end = '\0';
        }
    }
    if (start && end)
    {
        puts(start);
    }
    return 0;
}

输出:

123456789

像那样

#include <stdio.h>
#include <stddef.h>
#include <iostream>

int main(int argc , char *argv[])
{
    char t[] = R"(vte
ok "lp")", x, q[200]={0};
    sscanf(t,"%*[^\"]%*c%[^\"]" ,q);
    std::cout << q << std::endl;
}

警告:非 C 代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM