Program, bir karakter dizisinde belirli bir karaktere olan karakterleri 2 farklı fonksiyon kullanarak ekrana yazar. Karakter dizisi içindeki belirli karaktere kadar olan karakter sayısını bulmak için ilk fonksiyonda strchr() fonksiyonu, ikinci fonksiyonda ise strcspn() fonksiyonu kullanılır.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
char* bg_substr_tochar01(const char *src, char ch);
char* bg_substr_tochar02(const char *src, char ch);
int main(void)
{
char cdizi[] = "Karakter dizisi içinde<işlem";
// Türkçe karakterler için
setlocale(LC_ALL, "Turkish");
char* substr = bg_substr_tochar01(cdizi, '<');
printf("%s\n", substr);
substr = bg_substr_tochar02(cdizi, '<');
printf("%s\n", substr);
free(substr);
return 0;
}
// Karakter dizi içinde belirli bir karaktere kadar olan değerleri okuma
char* bg_substr_tochar01(const char *src, char ch)
{
char *gdizi;
int pos = strchr(src, ch)-src; // ch değerine kadar olan karakter sayısı
gdizi = malloc(pos+1); // Okunacak karakter sayısı kadar bellek tahsisi
sprintf(gdizi, "%.*s", pos, src);
return gdizi;
}
// Karakter dizi içinde belirli bir karaktere kadar olan değerleri okuma
char* bg_substr_tochar02(const char *src, char ch)
{
char *gdizi;
int pos = strcspn(src, &ch); // ch değerine kadar olan karakter sayısı
gdizi = malloc(pos+1); // Okunacak karakter sayısı kadar bellek tahsisi
sprintf(gdizi, "%.*s", pos, src);
return gdizi;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
Karakter dizisi içinde Karakter dizisi içinde