substr (), , .
" ", , .. .
( 2 -5), - pos. pos, " ". pos 1 ( 5), src 1 ( 4). pos 0 ( 3) . , , pos. ( 2) src 0 . , ( 3), , , . : ( 6) pos ( 7). , pos , 2 5 7 pos . , pos -. ret -1 ( 8), .
, ( 9 - 13). len, " ". , src, , dest ( 11) 1 ( 12), len 1. len 0, , len ( 10). , ( 9). len ( 14). , ret 0 ( 16), , , ret 1 ( 17).
, dest ( 17). - , dest. ret, , ( 18).
5.3. substr ().
substr () , . ret , .
|
|
, 2 - 5, :
for(; pos&&*src; pos--, src++);
. :
pos&&*src,
: (pos==0)&&(*src=0),
pos src. .
:
if (pos||(len<0)) ret=-1;
( 68).
, ( 913):
for(;len&&*src; *dest++=*src++,len--);
, , .
ret ( 1416):
ret = len? 1: 0;
( 0) ( 17):
*dest=0;
( 18) ret:
return ret;
5.4. main()
substr (). , - . , C, man (). . , substr () , man ().
5.4.1. main ()
man () :
-: char s1[80];
-: char s2[80];
: int n;
: int l;
, substr (): int r;
, , , . , C , char * , :
char *s1;
, . , , 80 gets (s1), , s1, , , . , - , .
.
5.4.2. man ()
man () . -. , , :
if (! strcmp (gets (s 1),"***")) break;
gets (s1), s1. s1. , , strcmp () ***. , strcmp () 0, . , , ***.
|
|
n l substr (), s1, s2, n, l. , substr (), r.
-, - , . ( , "": >><<. , -, .)
gets () - "". , scanf () Enter, . "" gets (), gets () , . "" gets () Enter. , , .
5.4.3.
man () - , stdo.h strng.h. , substr (). man (), C , .
.
#include <stdio.h> #include <string.h> int substr(char *, char *, int, int); /*** ***/ int main(void) { char s1[80],s2[80]; /* */ int n, l, r; /* , , */ for (;;) { /* */ printf(" >"); /* - */ if (!strcmp(gets(s1),"***")) break; printf(" pos len>"); /* */ scanf("%d %d",&n,&l); r=substr(s1,s2,n,l); /* substr() */ printf("pos=%d, len=%d\n",n,l); /* */ printf("s1=>>%s<<\n",s1); printf("s2=>>%s<<\n",s2); printf("R=%d\n\n",r); gets(s1); } } /*** : 0 - , 1 - , , -1 - , ***/ int substr(char *src, char *dest, int pos, int len) { int ret; /* , */ for(; pos&&*src; pos--, src++); /* */ if (pos||(len<0)) ret=-1; /* */ else { /* */ for(;len&&*src; *dest++=*src++,len--);/* */ ret = len?1: 0; /* */ } *dest=0; /* */ return ret; }
:
,
,
,
,
- ( -).
, , , . . , , "" - .
|
|
, . - : 0123456789. , . pos len :
pos =2, len =3 | |
pos =0, len =4 | |
pos =6, len =4 | |
pos =0, len =10 | |
pos =3, len =0 | |
pos =8, len =4 | : , |
pos =3, len =2 | : |
pos =1, len =3 | : |
pos =10, len =3 | - : |
7
.
1.
2.
3.
4.
5.
5. 1
5.1.
5.2.
5.3.
5.4.
6. 2
6.1.
6.2.
6.3.
6.4.
C.