ΠΕΡΙΕΧΟΜΕΝΑ

 

1. strcat( )

2. strncat( )

3. strcpy( )

4. strncpy( )

5. strcmp( )

6. strncmp( )

7. strlen( )

8. strlwr( )

9. strupr( )

10. strrev( )

11. strcspn( )

12. strspn( )

13. strdup( )

14. strset( )

15. strnset( )

16. strpbrk( )

17. strchr( )

18. strrchr( )

19. strstr( )

 

 

 

 

 

 

Β. STRING FUNCTIONS

 

1. strcat( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strcat(char *str1, char *str2)

 

            Η συνάρτηση αυτή συνδέει κατά σειρά τα str1 και str2, τερματίζοντας το str1 με ένα κενό. Το αποτέλεσμα καταχωρείται στο str1. Το str2 παραμένει ανέπαφο από τη διαδικασία.

 

            Η συνάρτηση strcat( ) επιστρέφει str1. Υπενθυμίζεται ότι δεν υπάρχει boundary checking (τα string είναι πίνακες), οπότε αυτό αφήνεται στην υπευθυνότητα του προγραμματιστή. Πρέπει δηλαδή να αποφύγουμε την περίπτωση που το άθροισμα των στοιχείων των δύο πινάκων να υπερβαίνει τον αριθμό των θέσεων του str1.

 

Π.χ.:                   #include <string.h>

                          main( )

                          {

                            char s1[80], s2[80];

                            gets(s1);

                            gets(s2);

                            strcat(s1, s2);

                            printf(s2);

                          }

 

            Αν υποθέσουμε ότι κατά τη διάρκεια της εισόδου στο παραπάνω παράδειγμα δώσουμε s1 = “hello” και s2 = “There”, το αποτέλεσμα της printf( ) θα είναι: Therehello.

 

 

2. strncat( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strncat(char *str1, char *str2, int count)

 

            Η συνάρτηση αυτή συνδέει κατά σειρά τα δύο string str1 και str2, όπως και η strcat( ), με τη διαφορά ότι συνδέει τόσους χαρακτήρες από το str2 στο str1 όσος είναι και ο αριθμός count και τερματίζει το str1 με ένα κενό. Το str2 παραμένει ανέπαφο από τη διαδικασία. Η συνάρτηση επιστρέφει str1.

 

Π.χ.:                   #include <string.h>

                          main( )

                          {

                            char s1[80], s2[80];

                            unsigned int len;

                            gets(s1);

                            gets(s2);

                            len = 79 – strlen(s2);

                            strncat(s2, s1, len);

                            printf(s2);

                          }

 

            Αν ο χρήστης δώσει hello και There, θα τυπωθεί: Therehello. Ούτε εδώ γίνεται boundary checking, οπότε ο χρήστης επιφορτίζεται με την ευθύνη του ελέγχου.

 

 

3. strcpy( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strcpy(char *str1, char *str2)

 

            Η συνάρτηση αυτή αντιγράφει τα περιεχόμενα του str2 στο str1. Επιστρέφει έναν pointer στο str1, δηλαδή την αρχική διεύθυνση μνήμης που θα δείχνει το πρώτο στοιχείο του str1. Συνήθως, η str1 είναι κενή. Στην αντίθετη περίπτωση το str1 χάνει το περιεχόμενό του.

 

Π.χ.:                 char str[80];

                        strcpy( str, “hello”);

 

            Το παραπάνω τμήμα κώδικα αντιγράφει “hello” στο str.

 

 

 

4. strncpy( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strncpy(char *dest, char *source, int count)

 

            Αντιγράφει count χαρακτήρες (έναν αριθμό χαρακτήρων) από το source στο dest. Η συνάρτηση επιστρέφει ένα pointer στο dest.

            Αν το source έχει λιγότερους από count χαρακτήρες, τότε προστίθενται κενά στο τέλος του, έως ότου αντιγραφούν count χαρακτήρες.

 

Π.χ.:                 char str1 [80], str2 [80];

                        gets(str1);

                        Strncpy(str2, str1, 79);

 

            Αντιγράφει 79 χαρακτήρες από το str1 στο str2.

 

 

5. strcmp( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

int strcmp(char str1, char str2)

 

            Συγκρίνει λεξικογραφικά (γράμμα προς γράμμα) τις δύο string και επιστρέφει έναν ακέραιο, βασισμένο στο αποτέλεσμα, όπως φαίνεται εδώ:

 

                                      <0, όταν str1<str2

                                        0, όταν str1=str2

                                      >0, όταν str1>str2

 

            Η συνάρτηση έχει παρουσιαστεί ξανά (στη σελίδα 60, όπου υπάρχει και παράδειγμα).

 

 

6. strncmp( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strncmp(char str1, char sr2, int count)

 

            Συγκρίνει count χαρακτήρες από τα δύο string και επιστρέφει έναν ακέραιο βασισμένο στο αποτέλεσμα, όπως και η strcmp( ).

 

 

7. strlen( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

unsigned strlen( char *str)

 

            Επιστρέφει το μήκος ενός string σε χαρακτήρες.

Π.χ.:                 strcpy(s, “hello”);

                        printf(“%d”, strlen(s));

            Το τμήμα κώδικα αυτό θα τυπώσει 5 στην οθόνη.

 

 

8. strlwr( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strlwr(char *str)

 

            Μετατρέπει το string σε lowercase (από κεφαλαία σε μικρά).

 

Π.χ.:                #include <string.h>

                        main( )

                        {

                                      char s[80];

                          strcpy( s, “THIS IS A TEST”);

                          strlwr( s);   puts(s);

                        }

 

            Το παραπάνω παράδειγμα θα εμφανίσει : this is a test.

 

 

9. strupr( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strupr(char *str)

 

            Μετατρέπει το string σε uppercase (από μικρά σε κεφαλαία).

 

Π.χ.:                #include <string.h>

                        main( )

                        {

                                      char s[80];

                          strcpy( s, “this is a test”);

                          strupr( s);   puts(s);

                        }

 

            Θα εμφανίσει στην οθόνη: THIS IS A TEST.

 

 

10. strrev( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strrev(char *str)

 

            Αντιστρέφει όλους τους χαρακτήρες ενός string, εκτός από τον null terminator.

 

Π.χ.:                #include <string.h>

                        char s[ ]  = “hello”

                        main( )

                        {

                          strrev(s);

                          printf(s);

                        }

 

            Το παραπάνω τμήμα κώδικα θα εμφανίσει olleh στην οθόνη.

 

 

11. strcspn( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

int strcspn(char *str1, char *str2)

 

            Επιστρέφει τη θέση του πίνακα ( το string είναι πίνακας), στην οποία βρίσκεται ο πρώτος χαρακτήρας του str2.

 

Π.χ.:                #include <string.h>

                        main( )

                        {

                          int len;

                          len = strcspn( “This is a test”, “ab”);

                          printf(“%d”, len);

                        }

 

            Θα εμφανίσει στην οθόνη τον αριθμό 8 (υπενθυμίζεται ότι οι πίνακες στη C ξεκινάνε από τη θέση 0).

 

 

12. strspn( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strspn(char *str1, char str2)

 

            Επιστρέφει τη θέση του πίνακα str1[ ], η οποία δεν ταιριάζει με καμία από τις θέσεις του str2[ ]. Με άλλα λόγια επιστρέφει τη θέση του χαρακτήρα από το str1, που δεν βρίσκεται στο str2.

 

Π.χ.:                #include <string.h>

                        Main( )

                        {

                          int len;

                          len = strspn(“This is a test”, “siht”);

                          printf(“%d”, len);

                        }

 

            Το παραπάνω πρόγραμμα θα επιστρέψει 8. Αυτό γιατί το a βρίσκεται στην 8η θέση του πίνακα και είναι το πρώτο γράμμα που δεν ταιριάζει με τους χαρακτήρες του δεύτερου string.

 

 

13. strdup( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strdup(char *str)

 

            Δεσμεύει αρκετή μνήμη (χωρίς να κληθεί η malloc( )) έτσι ώστε να διπλασιαστεί το str, περνά αυτό το string στο χώρο που δεσμεύτηκε και επιστρέφει έναν pointer σ’ αυτό.

 

Π.χ.:                char str[80], *p;

                        strcpy( str, “This is a Test”);

                        p = strdup(str);

 

 

14. strset( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strset(char *str, char ch)

 

            Θέτει όλους τους χαρακτήρες του string ίσους με τον χαρακτήρα ch.

 

Π.χ.:                strset(str, ‘x’);

 

            Γεμίζει το str όλο με x.

 

 

15. strnset( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strnset(char *str, char ch, unsigned count)

 

            Θέτει τους count πρώτους χαρακτήρες του string ίσους με τον χαρακτήρα ch.

 

Π.χ.:                char str[80];

                        strnset( str, ‘x’, 10);

 

            Το παραπάνω παράδειγμα θα θέσει τους 10 πρώτους χαρακτήρες του str ίσους με x.

 

 

16. strpbrk( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strbpkr(char *str1, char str2)

 

            Επιστρέφει έναν pointer που δείχνει στον πρώτο χαρακτήρα του str1, ο οποίος ταιριάζει με οποιονδήποτε χαρακτήρα από το str2.

 

Π.χ.:                #include <string.h>

                        main( )

                        {

                          char *p;

                          p = strpbrk ( “This is a test”, “absj”);

                          printf(p);

                        }

 

            Θα εμφανίσει “s is a test”. Αυτό γιατί το s είναι ο πρώτος χαρακτήρας που περιέχεται στο str2.

 

 

17. strchr( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strchr(char *str, char ch)

 

            Επιστρέφει έναν pointer που δείχνει στον πρώτο χαρακτήρα του str ο οποίος ταιριάζει με τον χαρακτήρα ch.

 

Π.χ.:                #include <string.h>

                        main( )

                        {

                          char *p;

                          p = strchr( “This is a test”, ‘ ‘);

                          printf(p);

                        }

 

            Θα εμφανίσει : “is a test”, γιατί το κενό εμφανίζεται στο str πριν το is.

 

 

18. strrchr( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strrchr(char *str, char ch)

 

            Επιστρέφει έναν pointer που δείχνει στην τελευταία επανάληψη του χαρακτήρα ch μέσα στο str.

 

Π.χ.:                #include <string.h>

                        main( )

                        {

                          char *p;

                          p = strrchr( “This is a test”, ‘i’);

                          printf(p);

                        }

 

            Θα εμφανίσει “is a test” γιατί ο χαρακτήρας “i” εμφανίζεται για τελευταία φορά μέσα στο str στο is.

 

 

19. strstr( )

 

Το πρωτότυπό της βρίσκεται στο <string.h>:

 

char *strstr(char *str1, char str2)

 

Επιστρέφει έναν pointer που δείχνει στην τελευταία επανάληψη του str2 μέσα στο str1.

 

Π.χ.:                #include <string.h>

                        main( )

                        {

                          char *p;

                          p = strstr( “This is a test”, ‘is’);

                          printf(p);

                        }

 

            Θα εμφανίσει στην οθόνη “is a test” γιατί η πρώτη επανάληψη του “is” γίνεται στο this.