[英]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的那部分,有什么好的办法可以解决这个问题吗?
任何意见,将不胜感激。
非常容易使用strchr
和strrchr
:
#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.