c语言程序设计,提取字符串

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;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img