W07_lancuchy.doc

(55 KB) Pobierz
Funkcje operujace na pamięci, łańcuchy

ŁAŃCUCHY W JĘZYKU C/C++

Stała tekstowa / łańcuchowa jest tablicą znaków zakończoną znakiem o kodzie: 0

np. stała łańcuchowa:  ”Jestem tekstem”

. . .

74

101

115

116

101

109

32

116

101

107

115

116

101

109

0

. . .

. . .

’J’

’e’

’s’

’t’

’e’

’m’

’ ’

’t’

’e’

’k

’s’

’t’

’e’

’m’

’\0’

. . .

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

 

              char * tekst;              // wskaźnik na znak == wskaźnik na początek łańcucha znaków

              tekst = ”Jestem tekstem” ;              // przypisanie zmiennej tekst adresu
                                                                                                                              // początku łańcucha znaków

              char  tekst2[ 100];              // 100-elementowa tablica znakow

                tekst2 = ”Jestem tekstem” ;              // błędne przypisanie !!!

              memcpy( tekst2, ”Jestem tekstem”, 15 );     // poprawne przypisanie

 

              Funkcje operujące na łańcuchach              <string.h>

              // kopiowanie jednego łańcucha do drugiego ®  wersja tablicowa

              char * strcpy( char tekst_wyj[ ], char tekst_wej[ ] )

              {

                            int i = 0;

                            while(   ( tekst_wyj[ i ] = tekst_wej[ i ] ) != ‘\0’   )

                                          i++;

                            return( tekst_wyj );

              }

 

 

              // kopiowanie jednego łańcucha do drugiego ®  wersja wskaźnikowa 1

              char * strcpy( char *tekst_wyj, char *tekst_wej )

              {

                            char *pocz=tekst_wyj;

                            while(   ( *tekst_wyj = *tekst_wej ) != ‘\0’   )

                                          {

                                                        tekst_wyj++;

                                                        tekst_wej++;

                                          }

                            return( pocz );

              }

              // funkcja kopiująca łańcuchy - wersja wskaźnikowa 2

              char * strcpy( char *tekst_wyj, char *tekst_wej )             

              {

                            char *pocz=tekst_wyj;

                            while*tekst_wyj++ = *tekst_wej++  ) ;

                            return( pocz );

              }

Funkcja porównująca teksty:              int  strcmp ( char *tekst_1,   char *tekst_2 )

                                                                      ( ang. „string compare” )

 

              funkcja zwraca wartość:              < 0              gdy              tekst_1  <  tekst_2

                                                                                                                              = 0              gdy              tekst_1 == tekst_2

                                                                                                                              > 0              gdy              tekst_1  >  tekst_2

 

              int  strcmp( char tekst_1[ ], char tekst_2[ ] )              // wersja tablicowa

              {

                            int i = 0;

                            while(  tekst_1[ i ] == tekst_2[ i ]  )

                                          if(  tekst_1[ i++ ] == ‘\0’  )

                                                        return( 0 );

                            return(  tekst_1[ i ] - tekst_2[ i ]  );

              }

 

 

              int  strcmp( char *tekst_1, char *tekst_2  )              // wersja wskaźnikowa 1

              {

                            while( *tekst_1 == *tekst_2 )

                                          {

                                                        if*tekst_1 == ‘\0’  )

                                                                      return( 0 );

                                                        tekst_1 = tekst_1 + 1;

                                                        tekst_2 = tekst_2 + 1 ;

                            ...

Zgłoś jeśli naruszono regulamin