Περιλαμβάνει:
- Συμβολοσειρές
- Παραγωγή τυχαίων αριθμών
Συμβολοσειρές -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;
}
Παραγωγή "τυχαίων" αριθμών( rand() & srand() )...
Στην C υπάρχει η δυνατότητα να παράγουμε τυχαίους αριθμούς με χρήση μιας συνάρτησης που λέγεται rand() και βρίσκεται στην βιβλιοθήκη "stdlib.h"! Στην πραγματικότητα δεν είναι και τόσο τυχαίοι αφού υπάρχει ένας σταθερός αριθμός(νομίζω μπορεί να αλλάζει ανάλογα με το σύστημά σας) που λέγεται RAND_MAX και όλοι οι "τυχαίοι αριθμοί" είναι μεταξύ του μηδενός και του RAND_MAX. Φυσικά μπορούμε να πάρουμε και αρνητικούς και ότι θέλουμε. Απλά, θα χρειαστούν κάποια μαθηματικά "κόλπα" όπως, διαιρέσεις, πολ/σμοί κτλ Οπότε, αυτό που θα πρέπει να κρατήσετε είναι οτι η συνάρτηση rand() επιστρέφει αριθμούς απο στο διάστημα: [ 0 - RAND_MAX ].
Στο παρακάτω παράδειγμα μπορείτε να δείτε πως χρησιμοποιείται αυτή η συνάρτηση. Πιο συγκεκριμένα χρησιμοποιώντας την srand() αρχικοποιούμε την rand σε μια τιμή σύμφωνα με την ώρα(δεν μας ενδιαφέρει πως και γιατί). Θα μπορούσατε να βάλετε και "srand(5);". Καλώντας την rand παίρνουμε έναν αριθμό και μετά ανάλογα με το τι θα δώσουμε βγαίνει το κατάλληλο μήνυμα.
- Κώδικας: Επιλογή όλων
/* rand example: guess the number */
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int iSecret, iGuess;
/* initialize random seed: */
srand ( time(NULL) );
/* generate secret number: */
iSecret = rand() % 10 + 1;
do {
printf ("Guess the number (1 to 10): ");
scanf ("%d",&iGuess);
if (iSecret<iGuess) puts ("The secret number is lower");
else if (iSecret>iGuess) puts ("The secret number is higher");
} while (iSecret!=iGuess);
puts ("Congratulations!");
return 0;
}
Το αποτέλεσμα που θα μας βγάλει είναι:
- Κώδικας: Επιλογή όλων
Guess the number (1 to 10): 5
The secret number is higher
Guess the number (1 to 10): 8
The secret number is lower
Guess the number (1 to 10): 7
Congratulations!
Δείτε επίσης και εδώ.