1. 程式人生 > >輸入一個字串,同時輸入幀頭和幀尾

輸入一個字串,同時輸入幀頭和幀尾

    printf("enter tail:\n");
    scanf("%s",tail);

    t = substr(str,head,0);
    x = t - strlen(head);     //x是幀頭第一個字元對應的下標位置
    y = substr(str,tail,t);   //y是幀尾字串後面的一個字元下標位置

    for(i = x;i < y;i++)        //列印幀頭幀尾之間的字串(包括幀頭幀尾)
    {
printf("%c",str[i]);
    }
    printf("\n");


    return 0;
}


int substr(char str[255],char s[255],int k)
{
char *p = str+k;     //定義k變數是因為第一次找到幀頭後,k記錄此時指標的位置,在找幀尾
char *p1 = s;               時就從幀頭後面開始找
int i = k;
int flag = 0,m;      //flag標誌位,為1時標誌找到第一個幀頭,即不再繼續尋找




while(*p != '\0')
{
if(*p == *p1 && flag == 0)       //如果第一個開頭字元相同就進入迴圈檢視後面字
{                                          符是否相同
while(*p == *p1 && *p1 != '\0')
{
p++;
                                p1++;
i++;    //i記錄指標位置
}
if(*p1 == '\0')
{
flag = 1;    //flag為1,找到第一個幀頭(或幀尾)就不在尋找
m = i;       //把此時的指標所指的下標位置賦給m讓函式返回m
}
}

else
{
p++;
i++;
}

}


return m;
}