輸入一個字串,同時輸入幀頭和幀尾
阿新 • • 發佈:2019-02-19
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;
}
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;
}