使用微处理器,我内存不足,并且必须以非常有效和安全的方式执行此操作。

所以我有一些来自服务器的数据,我必须找到它的标头。因此,例如:

char *meida="+IPD,0,206:GET /setWifi:home:0545881255 HTTP/1.1  Host: 192.168.4.1" ;


我只需要获取setWifi:home:0545881255

strstr查找句子中字符串的出现。如何使用它找到两个单词之间的句子?

最佳答案

现在,EDIT提取两个关键字之间的短语。

假设您读取的数据不是字符串文字,则可以对其进行修改。此代码查找第一个关键字的位置,跳过它,然后找到下一个关键字,并截断字符串。

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

int main (void){
    char meida[] ="+IPD,0,206:GET /setWifi:home:0545881255 HTTP/1.1  Host: 192.168.4.1";
    char *keyworda = "GET /";
    char *keywordb = " HTTP/";
    char *aptr, *bptr;

    aptr = strstr(meida, keyworda);
    if (aptr != NULL) {
        aptr += strlen(keyworda);       // skip past first keyword
        bptr = strstr(aptr, keywordb);
        if (bptr != NULL) {
            *bptr = '\0';               // truncate
            printf("%s\n", aptr);
        }
    }
    return 0;
}


程序输出:

setWifi:home:0545881255

10-08 03:51