Skip to content
Burak Köken edited this page Apr 14, 2015 · 11 revisions

string.h header dosyası stringler(karakter dizileri) üzerinde birçok işlem yapmayı sağlayacak fonksiyon prototiplerini içerir. Bu dosyayı aşağıdaki şekilde dahil ederek bu fonksiyonları kullanabilirsiniz. Fonksiyonların kullanımı için detaylı bilgiyi aşağıda bulabilirsiniz.

Header dosyasının dahil edilmesi :

#include <string.h>

string.h :

/*
 *  Copyright(C) 2014 Codnect Team
 *  Copyright(C) 2014 Burak Köken
 *
 *  This file is part of Uniq.
 *  
 *  Uniq is free software: you can redistribute it and/or modify it under the
 *  terms of the GNU General Public License as published by the Free Software
 *  Foundation, version 2 of the License.
 *
 *  Uniq is distributed in the hope that it will be useful, but WITHOUT ANY
 *  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 *  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
 *  details.
 *
 *  You should have received a copy of the GNU General Public License along
 *  with Uniq.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef __UNIQ_STRING_H__
#define __UNIQ_STRING_H__

extern size_t strlen(const char *s);
extern size_t strnlen(const char *s, size_t count);
extern int strcmp(const char *s1, const char *s2);
extern int strncmp(const char *s1, const char *s2, size_t count);
extern int strcasecmp(const char *s1, const char *s2);
extern int strncasecmp(const char *s1, const char *s2, size_t count);
extern char* strtoupper(char* s);
extern char* strtolower(char *s);
extern char* strntoupper(char* s, size_t count);
extern char* strntolower(char *s, size_t count);
extern char* strcpy(char *dest, const char *src);
extern char *strncpy(char *dest, const char *src, size_t count);
extern int strtobool(const char *s, bool *r);
extern char *str_ltrim(char *s);
extern char *str_rtrim(char *s);
extern char *strim(char *s);
extern char *strchr(const char *s, int c);
extern char *strrchr(const char *s, int c);
extern char *strtok(char *s, const char *delim);
extern char *strrtok(char *s, const char *delim);
extern int memcmp(const void *m1, const void *m2, size_t c);
extern void *memcpy(void *dest, const void *src, size_t c);
extern void *memset(void *s, int v, size_t c);
extern void *memscan(void *s, int v, size_t c);
extern char *strstr(const char *s1, const char *s2);
extern char *strnstr(const char *s1, const char *s2, size_t len);
extern char *strcasestr(const char *s1, const char *s2);
extern char *strncasestr(const char *s1, const char *s2, size_t len);
extern char *strcat(char *dest, const char *src);
extern char *strncat(char *dest, const char *src, size_t count);
extern char * strdup(const char *string);

#define strlchr(s,c)		strchr(s,c)
#define strltok(s,delim)	strtok(s,delim)

#endif /* __UNIQ_STRING_H__ */

###Fonksiyonların kullanım ve açıklamaları

strlen

strlen fonksiyonu kendisine parametre olarak verilen karakter dizisine işaret eden pointer yada diğer bir ifadeyle adresten başlayarak karakter dizisinin uzunluğu bulur ve geriye döndürür.

size_t strlen(const char *s)

Kullanımı :

...
#include <string.h>

...
size_t uzunluk = strlen("Uniq Kernel"); 

strnlen

strnlen fonksiyonu kendisine parametre olarak verilen karakter dizisine işaret eden pointer yada diğer bir ifadeyle adresten başlayarak karakter dizisinin uzunluğu bulur ve döndürür fakat kendisine verilen diğer parametre olan maksimum karakter(count) uzunluğuna kadar bakar.

size_t strnlen(const char *s, size_t count)

Kullanımı :

...
#include <string.h>

...
size_t uzunluk = strnlen("Uniq Kernel", 4); 

strcmp

strcmp kendisine parametre olarak verilen iki karakter dizisi pointer'ından başlayarak karakter dizilerini karşılaştırır(ilk parametre olarak verilen karakter dizisinin diğerine eşit olmadığı kontrol edilir) eğer iki karakter dizisi birbirine eşitse(aynıysa) geriye 0 döner. Eğer karşılaştırma yaparken ilk karakter dizisi diğer karakter dizisinden büyük olursa (bunu sözlükteki mantık gibi düşünürsek) örneğin; strcmp("Uniq","Kernel") şeklinde karşılaştırırsak sonuç 1 döner, tam tersi strcmp("Kernel","Uniq") şeklinde denersek sonuç -1 döner. (Büyük ve küçük harfe duyarlı)

int strcmp(const char *s1, const char *s2)

Kullanımı :

...
#include <string.h>

...
if(strcmp("Uniq", "Uniq") == 0){
  /* eşit */
}
else{
  /* eşit değil */
}

strncmp

strncmp kendisine parametre olarak verilen iki karakter dizisi pointer'ından başlayarak karakter verilen diğer bir parametre olan count yani maksimum belirtilen karaktere kadar karşılaştırır.(Büyük ve küçük harfe duyarlı)

int strncmp(const char *s1, const char *s2, size_t count)

Kullanımı :

...
#include <string.h>

...
if(strncmp("Uniq", "Unique", 2) == 0){
  /* eşit */
}
else{
  /* eşit değil */
}

strcasecmp

strcasecmp kendisine parametre olarak verilen iki karakter dizisi pointer'ından başlayarak karakter dizilerini karşılaştırır.(Büyük ve küçük harfe duyarsız)

int strcasecmp(const char *s1, const char *s2)

Kullanımı :

...
#include <string.h>

...
if(strcasecmp("UNIQ", "uniq") == 0){
  /* eşit */
}
else{
  /* eşit değil */
}

strncasecmp

strncasecmp kendisine parametre olarak verilen iki karakter dizisi pointer'ından başlayarak karakter verilen diğer bir parametre olan count yani maksimum belirtilen karaktere kadar karşılaştırır.(Büyük ve küçük harfe duyarsız)

int strncasecmp(const char *s1, const char *s2, size_t count)

Kullanımı :

...
#include <string.h>

...
if(strncasecmp("UNIQ", "uniq", 2) == 0){
  /* eşit */
}
else{
  /* eşit değil */
}

strtoupper

strtoupper kendisine parametre olarak verilen karakter dizisi pointer'ından başlayarak küçük harfleri büyük harflere çevirir. Ve kendisine verilen karakter dizisi pointer'ını geri döndürür.

char* strtoupper(char* s)

Kullanımı :

...
#include <string.h>

...
char str[10] = "uniq";
char* upper = strtoupper(str);

strtolower

strtolower kendisine parametre olarak verilen karakter dizisi pointer'ından başlayarak büyük harfleri küçük harflere çevirir. Ve kendisine verilen karakter dizisi pointer'ını geri döndürür.

char* strtolower(char* s)

Kullanımı :

...
#include <string.h>

...
char str[10] = "UNIQ";
char* lower = strtolower(str);

strntoupper

strntoupper kendisine parametre olarak verilen karakter dizisi pointer'ından başlayarak belirtilen count adet sayısı kadar küçük harfleri büyük harflere çevirir. Ve kendisine verilen karakter dizisi pointer'ını geri döndürür.

char* strntoupper(char* s, size_t count)

Kullanımı :

...
#include <string.h>

...
char str[10] = "uniq";
char* nupper = strntoupper(str, 2);

strntolower

strntolower kendisine parametre olarak verilen karakter dizisi pointer'ından başlayarak belirtilen count adet sayısı kadar büyük harfleri küçük harflere çevirir. Ve kendisine verilen karakter dizisi pointer'ını geri döndürür.

char* strntolower(char* s, size_t count)

Kullanımı :

...
#include <string.h>

...
char str[10] = "UNIQ";
char* nlower = strntolower(str, 2);