Program, bir karakter dizisinde belirli bir karakteri 2 farklı fonksiyon kullanarak değiştirir ve elde edilen karakter dizilerini ekrana yazar. İlk fonksiyonda strchr() fonksiyonu kullanır. İkinci fonksiyonda ise karakterleri tek tek tarayarak işlem yapar.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
char* bg_replace_chr01(const char *str, char find, char replace);
char* bg_replace_chr02(const char *str, char find, char replace);
int main(void)
{
char cdizi[] = "Karakter dizisi içinde işlem";
// Türkçe karakterler için
setlocale(LC_ALL, "Turkish");
printf("%s\n", cdizi);
char* substr = bg_replace_chr01(cdizi, 'a', 'e');
printf("%s\n", substr);
substr = bg_replace_chr02(cdizi, 'i', 'e');
printf("%s\n", substr);
free(substr);
return 0;
}
// Karakter dizi içinde belirli bir karakteri değiştirme (strchr() fonksiyonu ile)
char* bg_replace_chr01(const char *str, char find, char replace)
{
char *gstr = malloc (strlen(str)+1);
char *pos = gstr;
strcpy(gstr, str);
while ((pos = strchr(pos, find)) != NULL){
*pos = replace;
}
return gstr;
}
// Karakter dizi içinde belirli bir karakteri değiştirme (Karakterleri tek tek tarayarak)
char* bg_replace_chr02(const char *str, char find, char replace)
{
char *gstr = malloc (strlen(str)+1);
char *pos = gstr;
strcpy(gstr, str);
while(*pos != '\0') {
if(*pos == find) *pos = replace;
pos++;
}
return gstr;
}
Yukarıdaki örnekte, program aşağıdaki satırları ekrana yazar:
Karakter dizisi içinde işlem Kerekter dizisi içinde işlem Karakter dezese eçende eşlem