C程序设计,从下列字符串中提起字符串 temperature后面的数据 12.5,注意提取的数据以 ] 结束,可能数字是12.5,也可能123.5,意思是提取的数据宽度有变化时,也能提取
"Asia/Shanghai,server_time:1643418869,location:[33.06,107.03],result:{realtime:{status:ok,temperature:[12.5]"humidity:[0.95]"
将结果显示出来
写出具体的c语言编程
遍历字符,找到 temperature:[开始提取,到]结束即可。代码如下:
#include <stdio.h>
int main()
{
char str[1000];//="Asia/Shanghai,server_time:1643418869,location:[33.06,107.03],result:{realtime:{status:ok,temperature:[12.5],humidity:[0.95]";
char buf[100];
char* p="temperature:[";
int i=0,j=0,k=0;
int len = strlen(p);
gets(str); //读取字符串
for(i=0;i<strlen(str)-len;i++)
{
for(j=0;j<len;j++)
{
if(str[i+j]!=p[j])
break;
}
if(j<len)
continue;
else
{
//找到,提取
while(str[i+len+k] !=']')
{
buf[k] = str[i+len+k];
k++;
}
buf[k] = 0;
break;
}
}
printf("%s",buf);
return 0;
}
或者:
#include <stdio.h>
#include <string.h>
int main()
{
char str[1000];// = "Asia/Shanghai,server_time:1643418869,location:[33.06,107.03],result:{realtime:{status:ok,temperature:[12.5],humidity:[0.95]";
char buf[100];
const char* p = "temperature:[";
int i = 0, j = 0, k = 0;
int len = strlen(p);
gets(str); //读取字符串
for (i = 0; str[i] != '\0'; i++)
{
for (j = 0; str[i+j]!='\0' && p[j] != '\0'; j++)
{
if (str[i + j] != p[j])
break;
}
if (j < len)
continue;
else
{
//找到,提取
while (str[i + len + k] != ']')
{
buf[k] = str[i + len + k];
k++;
}
buf[k] = 0;
break;
}
}
printf("%s", buf);
return 0;
}
你题目的解答代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char s[] = "Asia/Shanghai,server_time:1643418869,location:[33.06,107.03],result:{realtime:{status:ok,temperature:[12.5]\"humidity:[0.95]\"";
char k[] = "temperature:[";
int i = strlen(k);
char *p = strstr(s,k)+i;
char *q = strstr(p,"]");
for (; p < q; p++)
printf("%c",*p);
return 0;
}
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!