.


:




:

































 

 

 

 





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.





:


: 2018-11-12; !; : 241 |


:

:

, .
==> ...

1802 - | 1681 -


© 2015-2024 lektsii.org - -

: 0.025 .