Κεφάλαιο - Συμβολοσειρές (Strings)

...ασύγχρονα μαθήματα γλώσσας C

Κεφάλαιο - Συμβολοσειρές (Strings)

Δημοσίευσηαπό linuxs » 23 Μαρ 2011, 23:16

Κεφάλαιο 12

Συμβολοσειρές -Strings
Στην C υπάρχουν αρκετές συναρτήσεις που αφορούν την επεξεργασία ακολουθιών χαρακτήρων. Όταν δεν υπάρχει ένας μόνο χαρακτήρας αλλα πολλοί μαζί, λέμε πως έχουμε μια συμβολοσειρά ή αλλιώς ένα string. Αυτό το string μπορούμε με κατάληλες συναρτήσεις που αν όχι όλες οι περισσότερες βρίσκονται στην βιβλιοθήκη <string.h> να το επεξεργαστούμε, να το αντιγράψουμε, να το κόψουμε σε μικρότερα κτλ. Γενικότερα απο οτι είδατε μπορούμε να κάνουμε ότι θέλουμε! ;) Οι συναρτήσεις που θα περιγράψουμε παρακαω έχουν ως όνομα str*** όπου *** είναι κάποια χαρακτηριστικό όνομα. Συνοπτικά, αναφέρω τις συναρτήσεις για να ξέρετε τι θα καλύψουμε.

  1. strlen()
  2. strcpy()
  3. strcat()
  4. 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;
}
Αν το πρόβλημά μας επιλυθεί. Επιλέγουμε το θέμα που βοήθησε στην επίλυση και πατάμε το κουμπάκι Εικόνα.
Γνώσεις ⇛ Linux: Μέτριο┃Προγραμματισμός: C┃Αγγλικά: Καλά
Λειτουργικό ⇛ Linux Ubuntu 10.4 LTS
Προδιαγραφές ⇛ Intel Pentium @T4500 2.3GHz│ 512GB VRAM│ 500 HDD│ ATI RADEON HD545v 512 MB │ Screen: 15.6''
Άβαταρ μέλους
linuxs
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1060
Εγγραφή: 02 Ιούλ 2010, 13:19
Τοποθεσία: GR
IRC: linuxs
Εκτύπωση

Re: Κεφάλαιο - Συμβολοσειρές (Strings)

Δημοσίευσηαπό Qdata » 23 Μαρ 2011, 23:55

Μεταφέρθηκε στην κατάλληλη ενότητα.

Linux User: #530165
Γνώσεις ⇛ Linux: Μέτριο ┃ Προγραμματισμός: Ναι ┃ Αγγλικά: Καλά
Λειτουργικό ⇛ Ubuntu 11.04 32bit σε Intel(R) Atom(TM) CPU N270 @ 1.60GHz
(Notebook) Προδιαγραφές ⇛ 2x Intel(R) Atom(TM) CPU N270 @ 1.60GHz │ 1016MB │ HDA-Intel - HDA Intel -- USB-Audio - USB AUDIO│ 1024x600 pixels
Νέος στο Linux?Οδηγοί - How to - Tutorials
Qdata
powerTUX
powerTUX
 
Δημοσιεύσεις: 1875
Εγγραφή: 18 Ιουν 2010, 19:40
Τοποθεσία: Σέρρες
IRC: dimos
Εκτύπωση


Επιστροφή στο Μαθήματα C