C語言:求子串
阿新 • • 發佈:2018-12-21
題目描述
編一返回指標值的函式,求字串的子串。
輸入
先輸入一個整數n,表示有n個測試資料,對於每個測試資料:
1)先按提示“input string:”輸入字串
2)然後按提示“i=”輸入求子串的起始位置i
3)再按提示“j=”輸入子串長度j
輸入舉例(粗體字的表示從鍵盤輸入)
2
input string:I am a student
i=6
j=5
input string:ab
i=3
j=2
輸出舉例:
a stu
Error
提示
注意在每次gets之前,要用getchar();讀掉前面輸入的已在鍵盤緩衝區中的回車符。
#include <stdio.h> char *substr(char *s,int i,int j) { int n,t; static char sub[100]; char *q=sub; for(n=0;s[n]!='\0';n++); if(i>0&&i<=n-j+1&&j>0&&j<=n-i+1) /*判斷i和j的值是否正確*/ { for(t=0;t<j;t++) q[t]=s[i+t-1]; q[t]='\0'; return(q); /*返回子串首地址*/ } else return(NULL); /*返回空指標(0值)*/ } int main() { int i,j,n; char a[100]; char *p; scanf("%d",&n); for(;n>0;n--) { printf("input string:"); getchar(); /*回車符會被當做輸入的字串,所以需要緩衝回車符*/ gets(a); printf("i="); scanf("%d",&i); printf("j="); scanf("%d",&j); p=substr(a,i,j); if(p) printf("%s\n",p); else printf("Error\n"); } return 0; }