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
109
32
107
0
’J’
’e’
’s’
’t’
’m’
’ ’
’k’
’\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
// 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
while( *tekst_wyj++ = *tekst_wej++ ) ;
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
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’ )
tekst_1 = tekst_1 + 1;
tekst_2 = tekst_2 + 1 ;
...
klamer87