思路:找到head在字符串中的位置,拿一个指针指向head之后(包括head)的字符串,在找tail 同理,返回两个指针;
然后我是利用printf()打印的时候遇到\0会停止打印,所以我就在从head开始打印,在tail后面的一个字母置\0,
这样就能完整打印出来想要的合法帧了;
#include <string.h> // 在字符串str中寻找字符串sub,如果找到返回从sub开始的字符串 char *findStr(char* str, char *sub) { char *p = NULL; int len = strlen(sub); // 算字串的长度 while(*str) { if (strncmp(str, sub, len) == 0) { p = str; break; } str++; } return p; } // 找合法帧 void findFrame(char *str, char *head, char *tail) { char *phead = findStr(str, head); // 找帧头的位置 char *ptail = findStr(str, tail); // 找帧尾的位置 if (phead != NULL && ptail != NULL) { ptail += strlen(tail); *ptail = '\0'; printf ("%s\n", phead);//从头开始打印,遇到\0的时候会结束打印; } } int main() { char str[] = "asdheadhauboisoktailgdg"; findFrame(str, "head", "tail"); return 0; }
