Skip to content

Instantly share code, notes, and snippets.

@Mervetafrali
Created March 30, 2017 10:54
Show Gist options
  • Save Mervetafrali/9b683f9aa4e39e6d33787260b0edc96a to your computer and use it in GitHub Desktop.
Save Mervetafrali/9b683f9aa4e39e6d33787260b0edc96a to your computer and use it in GitHub Desktop.

Programlama 2→ 6.Hafta

Karakter Üzerinde İşlem Yapan Fonksiyonlar

  • isalnum

  • isalpha

  • iscntrl

  • isdigit

  • isgraph

  • islower

  • isprint

  • ispunct

  • isspace

  • isupper

  • isxdigit

  • isascii

  • isblank

#include <stdio.h>
#include <ctype.h>
int main() {
    char c1;
	printf("karakter girin: ");
	scanf(" %c", &c1);
	if ( isdigit(c1) )
		printf("%c karakteri rakamdir\n", c1);
	else
		printf("%c karakter rakam degildir\n", c1);
	return 0;
}
#include <stdio.h>
#include <ctype.h>
int main() {
    char c1;
	printf("karakter girin: ");
	scanf(" %c", &c1);
	if ( isalpha(c1) )
		printf("%c karakteri harftir\n", c1);
	else
		printf("%c karakter harf degildir\n", c1);
	return 0;
}
#include <stdio.h>
#include <ctype.h>
int main() {
    char c1;
	printf("karakter girin: ");
	scanf(" %c", &c1);
	if ( ispunct(c1) )
		printf("%c karakteri noktalama isaretidir\n", c1);
	else
		printf("%c karakter noktalama isareti degildir\n", c1);
	return 0;
}
#include <stdio.h>
#include <ctype.h>
int main() {
    char c1;
	printf("karakter girin: ");
	scanf(" %c", &c1);
	if ( isalpha(c1) ) {
		if ( isupper(c1) ) // buyuk harf ise, kucuk harfi yaz
			printf("kucuk harf karsiligi: %c\n", tolower(c1));
		if ( islower(c1) ) // kucuk harf ise, buyuk harfi yaz
			printf("buyuk harf karsiligi: %c\n", toupper(c1));
	}
	return 0;
}

String çevirme fonksiyonları

atoi : “string”in içeriğini “integer”a çevirir
atol : “string”in içeriğini “long”a çevirir
atof : “string”in içeriğini “double”a çevirir
strtod(s, ptr) : s “string”inin içeriğini “double”a çevirir. Çevrilemeyen ilk karakterin adresini ptr isimli pointera atar.
strtol(s, ptr): s “string”inin içeriğini “long”a çevirir. Çevrilemeyen ilk karakterin adresini ptr isimli pointera atar.

#include <stdio.h>
#include <stdlib.h> // atio, atof, atol gibi fonksiyonlar stdlib'dedir

int main() {
	char s[50];
	int x;
	long y;
	double z;
	// kucuk sayilarla ve 15-20 basamakli sayilarla test edin
	// sonra kesirli sayilarla test edin
	printf("sayi girin: ");
	gets(s);

	x = atoi(s); // stringin icerigini integer’a cevirir
	y = atol(s); // stringin icerigini long’a cevirir
	z = atof(s); // stringin icerigini double’a cevirir

	printf("int: %d\n", x);
	printf("long: %ld\n", y);
	printf("double: %lf\n", z);

	return 0;
}
#include <stdio.h>
#include <stdlib.h> // atio, atof, atol gibi fonksiyonlar stdlib'dedir

int main() {
	char s[50];

	// kucuk sayilarla ve 15-20 basamakli sayilarla test edin
	// sonra kesirli sayilarla test edin
	printf("sayi girin: ");
	gets(s);

	double a;
	char *cevilemeyen_kisim;
	a = strtod(s, &cevilemeyen_kisim);
	printf("a: %lf\n", a);
	printf("sayidan_sonraki: %s\n", cevilemeyen_kisim);

	printf("\n");

	return 0;
}
#include <stdio.h>
#include <stdlib.h> // atio, atof, atol gibi fonksiyonlar stdlib'dedir

int main() {
	char s[50];

	// kucuk sayilarla ve 15-20 basamakli sayilarla test edin
	// sonra kesirli sayilarla test edin
	printf("sayi girin: ");
	gets(s);

	long b;

	// 10 -> onluk sayi tabanindan cevirdigimiz icin
	b = strtol(s, &cevilemeyen_kisim, 10);

	printf("b: %ld\n", b);
	printf("cevilemeyen_kisim: %s\n", cevilemeyen_kisim);

	return 0;
}

String karşılaştırma

  • Kullanılışı; strcmp(s1, s2)

Geri dönüş değeri;
s1 ve s2 stringlerini karşılaştırır.
Eşitse 0,
alfabetik olarak s1 < s2 ise negatif sayı,
s1 > s2 ise pozitif sayı döndürür.

#include <stdio.h>
#include <string.h>
int main() {
	char s1[100] = "aaaa";

	// yanlis kullanim, bu sekilde karsilastirma yapilamaz
	if (s1 == "aaaa")
		printf("esit\n");
	else
		printf("esit degil\n");

	printf("%u\n", s1);
	printf("%u\n", "aaaa");
	printf("\n");

	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {
	char a[10] = "test";
	char b[10] = "test";
	printf("a: test\n");
	printf("b: test\n");

	if (a == b)		printf("a ve b esit\n");
	else			printf("a ve b esit degil\n");

	printf("a: %u\n", a);
	printf("b: %u\n", b);
	printf("\n");
	/***********************************/

	int sonuc = strcmp(a, b);
	if (sonuc == 0)		printf("a ve b esit\n");
	else if (sonuc < 0)	printf("alfabetik olarak a < b\n");
	else				printf("alfabetik olarak a > b\n");

	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {

	sonuc = strcmp("telefon", "tablet");

	printf("a: telefon\n");
	printf("b: tablet\n");

	if (sonuc == 0)
		printf("a ve b esit\n");
	else if (sonuc < 0)
		printf("alfabetik olarak a < b\n");
	else
		printf("alfabetik olarak a > b\n");
	printf("\n");

	return 0;
}

String kopyalama

  • strcpy(s2, s1):

  • s1 stringini s2’ye kopyalar

  • strcat(s2, s1):

  • s1 stringini s2’nin sonuna ekler

#include <stdio.h>
#include <string.h>
int main() {
	char s1[100] = "aa bbb cc";
	char s2[100];


	int karakter_sayisi = strlen(s1);
	printf("strlen(s1) : %d\n", karakter_sayisi);


	// s1'i s2'ye kopyalar
	strcpy(s2, s1);

	printf("s1: %s\n", s1);
	printf("s2: %s\n", s2);


	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {
	char s1[100] = "aa bbb cc";
	char s2[100];

	strcpy(s1, "test 1 ");
	strcpy(s2, "deneme 2 ");
	printf("s1: %s\n", s1);
	printf("s2: %s\n", s2);

	strcat(s1, s2);
	printf("strcat(s1, s2) sonrasinda\n");
	printf("s1: %s\n", s1);
	printf("s2: %s\n", s2);

	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {

	char s1[100] = "aa bbb cc";
	char s2[100];

	strcpy(s1, "test 1 ");
	strcpy(s2, "deneme 2 ");
	strcpy(s1+strlen(s1), s2);

	printf("strcpy(s2+strlen(s1), s1) sonrasinda\n");
	printf("s1: %s\n", s1);
	printf("s2: %s\n", s2);

	return 0;
}

String arama

strchr(s, c) :
s içerisinde c karakterini arar.
Bulunduğu yeri tutan işaretçiyi döndürür.
Yoksa NULL (0 adresi) pointer döndürür.

strstr(s1, s2) :
s1 içerisinde s2 stringini arar.
Bulunduğu yeri tutan işaretçiyi döndürür.
Yoksa NULL pointer döndüdür.

#include <stdio.h>
#include <string.h>
int main() {
	char cumle[100];
	char karakter;
	printf("cumle girin:\n");
	gets(cumle);
	printf("aranan karakteri girin:\n");
	scanf("%c", &karakter);

	char *ilk_gectigi_ptr = strchr(cumle, karakter);
	if (ilk_gectigi_ptr == NULL)
printf("yok\n");
else
printf("ilk gectigi index: %d\n", ilk_gectigi_ptr-cumle);

char *son_gectigi_ptr = strrchr(cumle, karakter);
if (son_gectigi_ptr == NULL)
printf("yok\n");
else
printf("son gectigi index: %d\n", son_gectigi_ptr-cumle);
return 0;
}
#include <stdio.h>
#include <string.h>
int main() {
	char cumle[100];
	char aranan_str[20];

	printf("aranani girin:");
	scanf("%s", aranan_str);

	ilk_gectigi_ptr = strstr(cumle, aranan_str);
	if (ilk_gectigi_ptr == NULL)
		printf("\nyok\n");
	else
		printf("\nilk gectigi index: %d\n", ilk_gectigi_ptr-cumle);
	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {
	char cumle[200], aranan[20];
	printf("cumle girin:\n");
	gets(cumle);
	printf("aranani girin:");
	scanf("%s", aranan);

	int sayac = 0;
	char *ara_ptr = strstr(cumle, aranan);

	while (ara_ptr != NULL) {
		printf("yer: %d\n", ara_ptr-cumle);
		sayac++;
		// bir sonraki karkaterden itibaren tekrar ariyoruz
		ara_ptr = strstr(ara_ptr+1, aranan);
	}
	printf("cumlede %d kere geciyor\n", sayac);

	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {

	char cumle[200] = "Bu ornek;noktalama isaretlerini ve bosluklari kullanarak
   cumleyi parcalar. Bu cumle,test icin yazilmistir.";

	const char *ayrac = " .,;"; // bosluk, nokta ve virgul, noktali virgul...

	char *kelime = strtok(cumle, ayrac);
	while (kelime != NULL) {
		printf("%s\n", kelime);

		kelime = strtok(NULL, ayrac);
	}

	return 0;
}

Dizilerle işlem yapmak

memcpy(a, b, size):
b’yi a’ya kopyalar. size dizinin bellekteki boyutu.

memset :
diziye char boyutunda sabit bir deger atar.

#include <stdio.h>
#include <string.h>
int main() {
	int i;
	/************* string dizisi ****************/
	// 5 tane 20 karakterlik string dizisi
	char string_dizisi[5][20];

	for (i = 0 ; i < 5 ; i++) {
		printf("birinci kelimeyi girin: ");
		scanf("%s", string_dizisi[i]);
	}
	printf("girilen kelimeler:\n");
	for (i = 0 ; i < 5 ; i++)
		printf("%s\n", string_dizisi[i]);
	printf("\n");

	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {
	/************* dizi karsilastirma ****************/
	int dizi_1[5] = {1,2,3,4,5};
	int dizi_2[5] = {1,2,3,4,5};

	if (dizi_1 == dizi_2) //HATA!!! bu sekilde kullanilamaz
		printf("esit\n");
	else
		printf("esit degil\n");

	int sonuc = memcmp(dizi_1, dizi_2, sizeof(int)*5);
	if (sonuc == 0)
		printf("esit\n");
	else
		printf("esit degil\n");
	printf("\n");

	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {

	/************* dizi kopyalama ****************/
	int dizi_3[9] = {0};

	// dizi_1'yi dizi_3'e kopyalar
	memcpy(dizi_3, dizi_1, sizeof(int)*5);

	// dizi_3'u ekrana yaz
	for (i = 0 ; i < 9 ; i++)
		printf("%d ", dizi_3[i]);
	printf("\n\n");

	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {

	/************* dizi sifirlama ****************/
	// dizi_3'u sifirlar
	memset(dizi_3, 0, sizeof(int)*9);

	// dizi_3'u ekrana yaz
	for (i = 0 ; i < 9 ; i++)
		printf("%d ", dizi_3[i]);
	printf("\n\n");

	return 0;
}
#include <stdio.h>
#include <string.h>
int main() {

	/************* diziye ortadan kopyalama ****************/
	// dizi_3'un 3. elemanindan itibaren dizi_1'i atamak istiyoruz
	// dizi_3'un [2,7] arasina dizi_1'in [0,4] arasini atamak
	memcpy(dizi_3+2, dizi_1, sizeof(int)*5);

	// dizi_3'u ekrana yaz
	for (i = 0 ; i < 9 ; i++)
		printf("%d ", dizi_3[i]);
	printf("\n\n");

	return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment