Συμβολοσειρές -Strings
Στην C υπάρχουν αρκετές συναρτήσεις που αφορούν την επεξεργασία ακολουθιών χαρακτήρων. Όταν δεν υπάρχει ένας μόνο χαρακτήρας αλλα πολλοί μαζί, λέμε πως έχουμε μια συμβολοσειρά ή αλλιώς ένα string. Αυτό το string μπορούμε με κατάληλες συναρτήσεις που αν όχι όλες οι περισσότερες βρίσκονται στην βιβλιοθήκη <string.h> να το επεξεργαστούμε, να το αντιγράψουμε, να το κόψουμε σε μικρότερα κτλ. Γενικότερα απο οτι είδατε μπορούμε να κάνουμε ότι θέλουμε!
- strlen()
- strcpy()
- strcat()
- strcmp()
Strlen
H strlen() είναι μια συνάρτηση που μετρά το πλήθος-μέγεθος του string και το επιστρέφει. Μας καθορίζει με άλλα λόγια το μήκος της συμβολοσειράς! Το αρχέτυπό της είναι:
- Κώδικας: Επιλογή όλων
size_t strlen(char *str);
Όρισμα: δείκτη προς την ακολουθία χαρακτήρων
Επιστρεφόμενη τιμή: το πλήθος χαρακτήρων ανάμεσα στο str και στον επόμενο κενό χαρακτήρα
έγραψε: Το size_t σημαίνει unsigned(απρόσημος αριθμός). Με άλλα λόγια δεν μας ενδιαφέρει αν είναι θετικός / αρνητικός!
παράδειγμα...
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char buf1[81]="-";
char buf2[81]="-";
int x;
printf("buf[1]: %sn", buf1);
printf("buf[2]: %sn", buf2);
printf("nConfiguring 'strlen'.n");
printf("Please type your name:");
scanf("%s", buf1);
x = strlen(buf1);
printf("Your name is %d long.n", x);
return 0;
}
Strcpy
Η strcpy είναι μια συνάρτηση που αντιγράφει μια ακολουθία χαρακτήρων σε μια άλλη θέση μνήμης. Το αρχέτυπό της είναι το εξής:
- Κώδικας: Επιλογή όλων
char *strcpy(char *destination, const char *source);
Ορίσματα: δύο strings, ένα για να διαβάσει και ένα για να γράψει την ακολουθία χαρακτήρων
Επιστρεφόμενη τιμή: δείκτης προς την νέα συμβολοακολουθία
έγραψε:προσέξτε πως πρώτα θα πρέπει αν έχετε κατανέμει χώρο για την μέα ακολουθία!
παράδειγμα...
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char buf1[81]="This is a sentence";
char buf2[81]="-";
printf("nConfiguring 'strcpy'.n");
printf("Before 'strcpy':tbuf1: %stbuf2: %sn", buf1, buf2);
strcpy(buf2,buf1);
printf("After 'strcpy':ttbuf1: %stbuf2: %sn", buf1, buf2);
return 0;
}
Strcat
Η συνάρτηση αυτή "κολλάει" ένα αντίγραφο μιας συμβολοσειράς σε μια άλλη, τα ενώνει δηλαδή. Το αρχέτυπό της είναι:
- Κώδικας: Επιλογή όλων
char *strcat(char *str1, const char *str2);
Ορίσματα: ένα string απο όπου θα διαβάσει μια συμβολοακολουθία και ένα νέο στο οποίο θα την κάνει "append" και θα την κολλήσει
Επιστρεφόμενη τιμή: έναν δείκτη προς την νέα συμβολοακολουθία
παράδειγμα...
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char buf1[81]="This is a sentence";
char buf2[81]="-";
printf("nConfiguring 'strcat'.n");
strcpy(buf1,"This is ");
strcpy(buf2,"a strcat example.");
printf("Before 'strcat':tbuf1: %stttbuf2: %sn", buf1, buf2);
strcat(buf1,buf2);
printf("After the 'strcat':tbuf1: %stbuf2: %sn", buf1, buf2);
return 0;
}
Strcmp
Η συνάρτηση αυτή "συγκρίνει" μια συμβολοσειρά με μια άλλη και επιστρέφει ποιά είναι μεγαλύτερη. Το αρχέτυπό της είναι:
- Κώδικας: Επιλογή όλων
int strcmp(const char *str1, const char *str2);
Ορίσματα: δύο strings προς σύγκριση
Επιστρεφόμενη τιμή: ένας ακέραιος
έστω: strcmp(str1, str2).
oι δυνατές επιστροφές είναι οι εξής:
- Κώδικας: Επιλογή όλων
<0 --> όταν str1<str2
0 --> όταν str1=str2
>0 --> όταν str1>str2
παράδειγμα...
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
char buf1[81]="This is a sentence";
char buf2[81]="-";
printf("nConfiguring 'strcat'.n");
strcpy(buf1,"This is ");
strcpy(buf2,"a strcat example.");
printf("Before 'strcat':tbuf1: %stttbuf2: %sn", buf1, buf2);
strcat(buf1,buf2);
printf("After the 'strcat':tbuf1: %stbuf2: %sn", buf1, buf2);
return 0;
}

.
