Sic Parvis Magna

C etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
C etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

9 Mayıs 2026 Cumartesi

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #17

Mayıs 09, 2026 Posted by unexpected , , No comments

AllocConsole

Çağıran işlem (process) için yeni bir konsol penceresi oluşturan bir Windows API fonksiyonudur. Genellikle bir grafik kullanıcı arayüzü (GUI) uygulamasına (Windows Forms, WPF veya DLL gibi) çalışma zamanında hata ayıklama (debug) çıktısı veya komut satırı etkileşimi eklemek için kullanılır. Barşarılı ise 1 değerini, başarısız durumunda 0 değerini döner.

  • Bir işlem aynı anda yalnızca bir konsola bağlı olabilir. Eğer işlemin halihazırda bir konsolu varsa AllocConsole hata döndürür.
  • Fonksiyon yeni bir konsol oluşturur ancak stdin, stdout ve stderr akışlarını otomatik olarak buraya yönlendirmez.
  • Eğer uygulama bir alt işlem (child process) oluşturursa, bu yeni işlem ebeveynin oluşturduğu konsolu miras alabilir.
Syntax
BOOL AllocConsole(void);
example.cpp
#include <iostream>
#include <stdio.h>
#include <windows.h>

int main(int argc, char** argv)
{	
	FreeConsole();
	
	if(AllocConsole())
	{
		std::cout << "Test" << std::endl;
		system("pause");
		
		FreeConsole();
	}
	
	std::cout << "Error: " << GetLastError();
	
	return 0;
}

14 Ekim 2025 Salı

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #16

Ekim 14, 2025 Posted by unexpected , , , No comments

uname

Bir struct değeri alır sistem ile ilgili bilgileri döner. Barşarılı ise 0 değerini, başarısız durumunda -1 değerini döner.

Syntax
int uname(struct utsname* name);

Params

  • name: struct ustname değeri
example.cpp
#include <stdio.h>
#include <sys/utsname.h>

int main(int argc, char** argv)
{	
	struct utsname uts;
	
	if(uname(&uts) == -1)
		return -1;
	
	printf("Sysname: %s\n", uts.sysname);
	printf("Nodename: %s\n", uts.nodename);
	printf("Release: %s\n", uts.release);
	printf("Version: %s\n", uts.version);
	printf("Machine: %s\n", uts.machine);
	printf("Domain: %s\n", uts.__domainname);
	
	return 0;
}

31 Ağustos 2025 Pazar

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #15

Ağustos 31, 2025 Posted by unexpected , , , No comments

newlocale

Yeni bir locale oluşturur.

Syntax
locale_t newlocale(int category_mask, const char* locale, locale_t base);

Params

  • category_mask: Bir katagori seçilir.
  • locale: Local adı verilir. Örn: en_US.UTF-8, C eğer NULL olursa yeni oluşturur.
  • base: Sıfır olarak tanımlanır.

Kategori Mask Listesi:

  • LC_CTYPE_MASK
  • LC_NUMERIC_MASK
  • LC_TIME_MASK
  • LC_COLLATE_MASK
  • LC_MONETARY_MASK
  • LC_MESSAGES_MASK
  • LC_PAPER_MASK
  • LC_NAME_MASK
  • LC_ADDRESS_MASK
  • LC_TELEPHONE_MASK
  • LC_MEASUREMENT_MASK
  • LC_IDENTIFICATION_MASK
  • LC_ALL_MASK
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{	
	locale_t loc = newlocale(LC_ALL_MASK, "en_US.UTF-8", (locale_t)0);
	if(!loc)
	{
		printf("newlocale error\n");
		return -1;
	}
	
	return 0;
}

duplocale

Verilen locale_t nesnesinin kopyasını oluştur. Başarılı olursa locale_t döner. Başarısız durumun da NULL olarak döner.

Syntax
locale_t duplocale(locale_t dataset);

Params

  • dataset: locale_t tipinde bir değer alır.
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{
	...
	
	locale_t copy_loc = duplocale(loc);
	if(!copy_loc)
	{
		printf("duplocale error\n");
		return -1;
	}
	
	return 0;
}

freelocale

Oluşturulmuş locale_t nesnelerini serbest bırakır.

Syntax
void freelocale(locale_t dataset);

Params

  • dataset: locale_t tipinde bir değer alır.
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{
	...
	
	freelocale(loc);
	freelocale(copy_loc);
	
	return 0;
}

uselocale

Aktif bir thread'in localini değiştirir.

Syntax
locale_t uselocale(locale_t dataset);

Params

  • dataset: Eğer LC_GLOBAL_LOCALE verilirise thread, tekrar global locale’i kullanmaya başlar. NULL verlirse sadece mevcut thread’in aktif locale’i döndürülür (değişiklik yapılmaz). Bir locale_t nesnesi verilirse o locale, geçerli thread için aktif olur.
example.cpp
#include <stdio.h>
#include <locale.h>

int main(int argc, char** argv)
{
	...
	
	locale_t thread_loc = uselocale(loc);
	if(!thread_loc)
	{
		printf("uselocale error\n");
		return -1;
	}
	
	return 0;
}

10 Nisan 2025 Perşembe

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #14

Nisan 10, 2025 Posted by unexpected , , No comments

signal

Sinyalere özel bir handler tanımlanır. Başarılı ise tanımlı handler döner.

Syntax
__sighandler_t signal(int sig, __sighandler_t hnd);

Params

  • sig: Sinyal tanımları alır.
  • hnd: Bir callback function alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int isrunning = 1;

void callback_handler(int num)
{
	isrunning = 0;
}

int main(int argc, char** argv)
{	
	int count = 0;
	signal(SIGINT, callback_handler);  /// Ctrl+C sinyalini yakala
	while(isrunning)
	{
		printf("\rCount: %d", count);
		count++;
	}
	
	return 0;
}
Kullanılabilir sinyal tanımları:
example.txt
SIGINT		# Interactive attention signal.
SIGILL		# Illegal instruction.
SIGABRT		# Abnormal termination.
SIGFPE		# Erroneous arithmetic operation.
SIGSEGV		# Invalid access to storage.
SIGTERM		# Termination request.
SIGHUP		# Hangup.
SIGQUIT		# Quit.
SIGTRAP		# Trace/breakpoint trap.
SIGKILL		# Killed.
SIGBUS		# Bus error.
SIGSYS		# Bad system call.
SIGPIPE		# Broken pipe.
SIGALRM		# Alarm clock.
SIGURG		# Urgent data is available at a socket.
SIGSTOP		# Stop, unblockable.
SIGTSTP		# Keyboard stop.
SIGCONT		# Continue.
SIGCHLD		# Child terminated or stopped.
SIGTTIN		# Background read from control terminal.
SIGTTOU		# Background write to control terminal.
SIGPOLL		# Pollable event occurred (System V).
SIGXCPU		# CPU time limit exceeded.
SIGXFSZ		# File size limit exceeded.
SIGVTALRM	# Virtual timer expired.
SIGPROF		# Profiling timer expired.
SIGUSR1		# User-defined signal 1.
SIGUSR2		# User-defined signal 2.
SIGWINCH	# Window size change (4.3 BSD, Sun).

sigismember

Her hangi bir sinyalin sigset_t içerisinde olup olmadığını kontrol eder. Başarılı ise 1 başarısız ise 0 değerini döner.

Syntax
int sigismember(const sigset_t* set, int signo); // linux systems

Params

  • set: sigset_t değeri alır.
  • signo: Sinyal tanımları alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
    
	if(sigismember(&set, SIGINT))
		printf("Sinyal mevcut.");
	
	return 0;
}

sigfillset

Tüm sinyaleri sigset_t içerisine ekler. Başarılı ise 0 değerini döner.

Syntax
int sigfillset(sigset_t* set); // linux systems

Params

  • set: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigfillset(&set);
	
	if(sigismember(&set, SIGINT))
		printf("Sinyal mevcut.");
	
	return 0;
}

sigemptyset

Tüm sinyaleri sigset_t içerisinden boşaltır. Başarılı ise 0 değerini döner.

Syntax
int sigemptyset(sigset_t* set); // linux systems

Params

  • set: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigfillset(&set);	/// Önce doldur
	sigemptyset(&set);  /// Sonra boşalt
	
	if(sigismember(&set, SIGINT))	/// Kontrol et
		printf("Sinyal mevcut.");
	
	return 0;
}

sigaddset

Belirli bir sinyali sigset_t içerisine ekler. Başarılı ise 0 değerini döner.

Syntax
int sigaddset(sigset_t* set, int signo); // linux systems

Params

  • set: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigemptyset(&set);        /// Önce boşalt
	sigaddset(&set, SIGINT);  /// Sonra ekle
	
	if(sigismember(&set, SIGINT))	/// Kontrol et
		printf("Sinyal mevcut.");
	
	return 0;
}

sigdelset

Belirli bir sinyali sigset_t içerisinden siler. Başarılı ise 0 değerini döner.

Syntax
int sigdelset(sigset_t* set, int signo); // linux systems

Params

  • set: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigemptyset(&set);       /// Önce boşalt
	sigaddset(&set, SIGINT); /// Sonra ekle
	sigdelset(&set, SIGINT); /// Sonra sil
	
	if(sigismember(&set, SIGINT))	/// Kontrol et
		printf("Sinyal mevcut.");
	
	return 0;
}

sigprocmask

Belirli sinyallerin işlenmesini engellemek veya eski hale getirmek için kullanılır. Başarılı ise 0 değerini döner.

Syntax
int sigprocmask(int how, const sigset_t* set, sigset_t* oset); // linux systems

Params

  • how: Sinyal engel tanımları alır.
  • set: sigset_t değeri alır.
  • oset: sigset_t değeri alır.
example.cpp
#include <stdio.h>
#include <signal.h>

int main(int argc, char** argv)
{	
	sigset_t set;
	
	sigemptyset(&set);
	sigaddset(&set, SIGINT);
	
	// Sinyali engelle
	sigprocmask(SIG_BLOCK, &set, NULL);
	
	// Sinyal engelini kaldır.
	sigprocmask(SIG_UNBLOCK, &set, NULL);
	
	return 0;
}
Kullanılabilir sinyal engel tanımları:
example.txt
SIG_BLOCK    # Block signals.
SIG_UNBLOCK     # Unblock signals.
SIG_SETMASK     # Set the set of blocked signals.

sigaction

Sinyalere özel bir handler tanımlanır. Başarılı ise 0 değerini döner.

Syntax
int sigaction(int sig, const struct sigaction* act, struct sigaction* oact); // linux systems

Params

  • sig: Sinyal tanımları alır.
  • act: Sigaction struct alır.
  • oact: Sigaction struct alır.
example.cpp
#include <string.h>
#include <ctype.h>

int isrunning = 1;

void callback_handler(int sig)
{
	isrunning = 0;
}

int main(int argc, char** argv)
{	
	struct sigaction sa;
	
	sa.sa_handler = callback_handler;
	sigemptyset(&sa.sa_mask);
	sa.sa_flags = 0;
	
	int count = 0;
	printf("%d\n", sigaction(SIGINT, &sa, NULL)); /// Ctrl+C sinyalini yakala
	while(isrunning)
	{
		printf("\rCount: %d", count);
		count++;
	}
	
	return 0;
}

31 Mart 2025 Pazartesi

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #13

Mart 31, 2025 Posted by unexpected , , , No comments

access

Verilen bir dosya için erişim kontrolünü sağlar. Barşarılı ise 0 değerini, başarısız durumunda -1 değerini döner.

Erişim modları:

  • F_OK: Full Access
  • X_OK: Executable Access
  • W_OK: Writable Access
  • R_OK: Readable Access
Syntax
int access(const char* filename, int mode);

Params

  • filename: Dosya adı
  • mode: Erişim modu
example.cpp
#include <string.h>
#include <unistd.h>

int main(int argc, char** argv)
{	
	printf("%d", printf("%d", access("data.txt", F_OK)));
	
	return 0;
}

nanosleep

Verilen süre boyunca işlemi duraklatır. Barşarılı ise 0 değerini, başarısız durumunda -1 değerini döner. Eğer sinyal tarafından kesilirse, kalan süre değerini rem değerine döner.

Syntax
int nanosleep(const struct timespec* req, struct timespec* rem);

Params

  • req: Bir timespec structer değeri alır
  • rem: Bir timespec structer değeri alır
example.cpp
#include <stdio.h>
#include <time.h>

int main(int argc, char** argv)
{
	struct timespec req, rem;
	
	// 1.5 saniye uyumak için: 1 saniye + 500 milyon nanosaniye
	req.tv_sec = 1; // (long)
	req.tv_nsec = 500000000; // (long) nanosaniye (1 saniye = 1,000,000,000 nanosaniye)

	if(nanosleep(&req, &rem) == -1)
	{
		printf("ld, ld", rem.tv_sec, rem.tv_nsec);
	}
	
	return 0;
}

23 Kasım 2024 Cumartesi

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #12

Kasım 23, 2024 Posted by unexpected , , No comments

memcmp

Belirlenen her iki değeri biri bir ile belirlenen karakter sayısı kadar karşılaştırır. Başarılı ise 0 değil ise -1 veya 1 değeri döner.

Syntax
int memcmp(const void* buf1, const void* buf2, size_t size);

Params

  • buf1: Sabit data değeri
  • buf2: Sabit data değeri
  • size: Karşılaştırılıcak Uzunluk
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	char buffer1[] = "memcmp";
	char buffer2[] = "memcmp";
	
	printf("%d", memcmp(buffer1, buffer2, sizeof(buffer2)));
	
	return 0;
}

memcpy

Belirtilen kaynak (src) değerini hedef (dst) değerine koplayalar. Başarlı ise hedef değerini döner. Başarısız ise NULL değerini döner.

Syntax
void* memcpy(void* dst, const void* src, size_t size);

Params

  • dst: Hedef
  • src: Kaynak
  • size: Kaynak Boyutu
example.cpp
#include <stdio.h>
#include <string.h>

struct Data
{
	char name[22];
	int age;
};

int main(int argc, char** argv)
{
	char src[] = "Hello World!";
	char dest[50];
	memcpy(&dest, &src, sizeof(src));
	printf("%s -- ", dest);
	
	Data d1, d2;
	memcpy(&d1.name, &src, sizeof(src));
	d1.age = 22;
	
	memcpy(&d2, &d1, sizeof(d1));
	printf("Name: %s - Age: %d", d2.name, d2.age);
	
	return 0;
}

memset

Belitilen kaynak veya hedef (dst) içerisinde yeni bir değer ataması yapılamasını sağlar. Burada val değeri ile belirlenen yeni değeri belirttiğimiz index den önceki tüm değerleri değişir. Başarılı ise dst değerini döner.

Syntax
void* memset(void* dst, int val, size_t size);

Params

  • dst: Kaynak veya Hedef Değer
  • val: Karakter veya ASCII Değer
  • size: Index veya değişecek index değeri
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	char str[] = "This is a sample memset";
	memset(str, '-', 4);
	printf("%s", str);
	
	return 0;
}

memmove

Belirlenen src değerini dst değeri içerisine belirtilen uzunluk kadar taşır. Başarılı ise dst değerini döner. Başarısız ise NULL döner.

Syntax
void* memmove(void* dst, const void* src, size_t size);

Params

  • dst: Hedef değer
  • src: Taşınacak değer
  • size: Index veya taşınacak index değeri
example.cpp
#include <stdio.h>
#include <string.h>

struct Data
{
	char name[22];
	int age;
};

int main(int argc, char** argv)
{
	char src[] = "memmove";
	
	char dest[50];
	memmove(&dest, &src, sizeof(src));
	printf("%s -- ", dest);
	
	Data d1, d2;
	memmove(&d1.name, &src, sizeof(src));
	d1.age = 22;
	
	memmove(&d2, &d1, sizeof(d1));
	printf("Name: %s - Age: %d", d2.name, d2.age);
	
	return 0;
}

memchr

Belitilen buf içerisinde verilen val değerindeki karakteri bulur. Return olarak bulunan karakterden sonraki kısmını döner.

Syntax
void* memchr(const void* buf, int val, size_t maxCount);

Params

  • buf: Kaynak Değer
  • val: Karakter veya ASCII Değer
  • size: Kaynak Uzunluk
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	char* pch;
	char str[] = "memchr";
	
	pch = (char*)memchr(str, 'c', sizeof(str));
	(pch != NULL) ? printf("Found at position: %d", pch - str + 1) : printf("Not Found");
	
	return 0;
}

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #11

Kasım 23, 2024 Posted by unexpected , , No comments

strlen

Belirlenen bir char* değerinin uzunluğunu size_t olarak döner.

Syntax
size_t strlen(const char* str);

Params

  • str: String değeri
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	const char* str = "This is a sample strlen";
	
	size_t len = strlen(str);
	printf("Length: %ld", len);
	
	return 0;
}

strchr

Belirlenen bir const char* değeri içinde verilen int tipindeki karakteri bulur. Başarısız ise NULL değeri döner.

Syntax
char* strchr(const char* str, int val);

Params

  • str: String değeri
  • str: Aranacak Karakter
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	const char* str = "strchr";
	char* pch;
	
	pch = strchr(str, 'r');
	while(pch != NULL)
	{
		printf("Found at %d\n", pch - str + 1);
		pch = strchr(pch + 1, 'r');
	}
	
	return 0;
}

strrchr

Belirlenen bir const char* değeri içinde verilen int tipindeki karakteri bulur. Başarısız ise NULL değeri döner.

Syntax
char* strrchr(const char* _Str, int _Ch);

Params

  • str: String değeri
  • str: Aranacak Karakter
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	const char* str = "strrchr";
	char* pch;
	
	pch = strrchr(str, 'r');
	while(pch != NULL)
	{
		printf("Found at %d\n", pch - str + 1);
		pch = strrchr(pch + 1, 'r');
	}
	
	return 0;
}

strdup

Verilen const char* değerini char* olarak geri döner. Başarısız ise NULL değerini döner.

Syntax
char* strdup(const char* src);

Params

  • str: String değeri
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	const char* str = "This is a sample strdup";
	
	char* pch = strdup(str);
	printf("%d", pch);
	
	return 0;
}

strcmp

Belirlenen her iki değeri biri bir ile karşılaştırır. Başarılı ise 0 değil ise -1 değeri döner.

Syntax
int strcmp(const char* _Str1, const char* _Str2);

Params

  • str1: Sabit string değeri
  • str2: Sabit string değeri
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	char buffer1[] = "strcmp";
	char buffer2[] = "strcmp";
	
	printf("%d", strcmp(buffer1, buffer2));
	
	return 0;
}

strncmp

Belirlenen her iki değeri biri bir ile belirlenen karakter sayısı kadar karşılaştırır. Başarılı ise 0 değil ise -1 değeri döner.

Syntax
int strncmp(const char* str1, const char* str2, size_t maxCount);

Params

  • str1: Sabit string değeri
  • str2: Sabit string değeri
  • maxCount: Karşılaştırılıcak Uzunluk
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	char str[][5] = {"R2D2", "C3PO", "R2A6"};
	
	for(int n = 0; n < 3; n++)
		if(!strncmp(str[n], "R2xx", 2))
			printf("Found %s\n", str[n]);
	
	return 0;
}

strncasecmp

Belirlenen her iki değeri biri bir ile belirlenen karakter sayısı kadar büyük küçük kontrolü olmaksızın karşılaştırır. Başarılı ise 0 değil ise -1 değeri döner.

Syntax
int strncasecmp(const char* str1, const char* str2, size_t maxCount);

Params

  • str1: Sabit string değeri
  • str2: Sabit string değeri
  • maxCount: Karşılaştırılıcak Uzunluk
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	char str[][5] = {"R2D2", "C3PO", "R2A6"};
	
	for(int n = 0; n < 3; n++)
		if(!strncasecmp(str[n], "r2xx", 2))
			printf("Found %s\n", str[n]);
	
	return 0;
}

strcpy

Belirtilen kaynak (src) değerini hedef (dst) değerine koplayalar. Başarlı ise hedef değerini döner. Başarısız ise NULL değerini döner.

Syntax
char* strcpy(char* dest, const char* source);

Params

  • dest: Hedef değeri
  • source: Kaynak değeri
example.cpp
#include <stdio.h>
#include <string.h>

struct Data
{
	char name[22];
	int age;
};

int main(int argc, char** argv)
{
	char src[] = "strcpy";
	
	char dest[50];
	strcpy(dest, src);
	printf("%s -- ", dest);
	
	Data d1;
	strcpy(d1.name, src);
	d1.age = 22;
	
	printf("Name: %s - Age: %d", d1.name, d1.age);
	
	return 0;
}

strncpy

Belirtilen kaynak (src) değerini hedef (dst) değerine koplayalar. Başarlı ise hedef değerini döner. Başarısız ise NULL değerini döner.

Syntax
char* strncpy(char* _Dest, const char* _Source, size_t _Count);

Params

  • dest: Hedef değeri
  • source: Kaynak değeri
  • count: Kaynak Boyutu
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	char src[] = "strncpy";
	
	char dest[50];
	strncpy(dest, src, sizeof(src));
	printf("%s", dest);
	
	return 0;
}

strcat

Kaynağın bir kopyasını alıp dest ile birleştirir. Dönüş olarak dest döndürülür.

Syntax
char* strcat(char* dest, const char* source);

Params

  • dest: Hedef değeri
  • source: Kaynak değeri
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	char src[] = "strcat";
	char dest[50] = "--> ";
	
	strcat(dest, src);
	printf("%s", dest);
	
	return 0;
}

strncat

Kaynağın bir kopyasını alıp dest ile birleştirir. Count olarak stringin ne kadar bölümünü birleştirsin. Dönüş olarak dest döndürülür.

Syntax
char* strncat(char* dest, const char* source, size_t count);

Params

  • dest: Hedef değeri
  • source: Kaynak değeri
  • count: Kaynağın Uzunluğu
example.cpp
#include <stdio.h>
#include <string.h>

int main(int argc, char** argv)
{
	char src[] = "strncat";
	char dest[50] = "--> ";
	
	strncat(dest, src, 2);
	printf("%s", dest);
	
	return 0;
}

17 Kasım 2024 Pazar

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #10

Kasım 17, 2024 Posted by unexpected , , No comments

clock

Program tarafından tüketilen işlemci süresini döner. Saniye cinsinde görmek için CLOCKS_PER_SEC değeri ile bölünür. Başarısız durumu -1 döner.

Syntax
clock_t clock(void);

Params

  • void: Değer almaz
example.cpp
#include <time.h>

int main(int argc, char** argv)
{
	clock_t clk = clock();
	
	printf("%ld\n", clk / CLOCKS_PER_SEC);
	
	return 0;
}

time

Geçerli Takvimi ve saati unix timestamp olarak verir. Başarısız drumunda -1 değerini döner.

Syntax
time_t time(time_t* time);

Params

  • time: Buffer değeri
example.cpp
#include <time.h>

int main(int argc, char** argv)
{
	time_t t1, t2;
	
	t2 = time(&t1);
	
	printf("%ld %ld\n", t1, t2);
	printf("%ld", time(NULL));
	
	return 0;
}

difftime

Başlangıç ve bitiş arasındaki saniyeyi döner.

Syntax
double difftime(time_t time1, time_t time2);

Params

  • time1: 1. Zaman değeri
  • time2: 2. Zaman değeri
example.cpp
#include <time.h>

int main(int argc, char** argv)
{
	time_t now, end;
	
	time(&now);
	time(&end);
	
	double dif = difftime(now, end);
	printf("%f", dif);
	
	return 0;
}

localtime

Timestamp değerinden yerel zamanı döner.

Syntax
struct tm* localtime(const time_t* time);

Params

  • time: Zaman değeri
example.cpp
#include <time.h>

int main(int argc, char** argv)
{
	time_t timer;
	struct tm* timeinfo;
	
	time(&timer);
	timeinfo = localtime(&timer);
	
	printf("Sec: %d\n", timeinfo->tm_sec);
	printf("Min: %d\n", timeinfo->tm_min);
	printf("Hour: %d\n", timeinfo->tm_hour);
	printf("Day: %d\n", timeinfo->tm_mday);
	printf("Ay: %d\n", timeinfo->tm_mon);
	printf("Year: %d\n", timeinfo->tm_year);
	printf("Week Day: %d\n", timeinfo->tm_wday);
	printf("Year Day: %d\n", timeinfo->tm_yday);
	printf("%d", timeinfo->tm_isdst);
	
	return 0;
}

mktime

Struct tipindeki değeri timestamp olarak dönüştürür.

Syntax
time_t mktime(struct tm* time);

Params

  • time: Zaman değeri
example.cpp
#include <time.h>

int main(int argc, char** argv)
{
	time_t now;
	struct tm* newyear;
	
	time(&now);
	newyear = localtime(&now);
	
	printf("%ld", mktime(newyear));
	
	return 0;
}

16 Kasım 2024 Cumartesi

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #9

Kasım 16, 2024 Posted by unexpected , , No comments

strtod

Verilen array içindeki iki adet double sayıyının birini verilen char* değerine yazar değerini ise çıktı olarak dönüş sağlar. Başarı durumunda string den double sayıya dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
double strtod(const char* str, const char** endptr);

Params

  • str: Dönüştürülcek değer
  • endptr: Tampon değer
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	char sz[] = "365.24 29.53";
	char* endptr;
	double d1, d2;
	
	d1 = strtod(sz, &endptr);
	d2 = strtod(endptr, NULL);
	
	printf("%f %f", d1, d2);
	
	return 0;
}

strtof

Verilen array içindeki iki adet float sayıyının birini verilen char* değerine yazar değerini ise çıktı olarak dönüş sağlar. Başarı durumunda string den float sayıya dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
float strtof(const char* str, const char** endptr);

Params

  • str: Dönüştürülcek değer
  • endptr: Tampon değer
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	char sz[] = "365.2 29.5";
	char* endptr;
	double f1, f2;
	
	f1 = strtof(sz, &endptr);
	f2 = strtof(endptr, NULL);
	
	printf("%f %f", f1, f2);
	
	return 0;
}

strtol

Sayıların hangi tabanda işleneceği belirtilir. Başarı durumunda string den long int tipine dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
long int strtol(const char* src, char** dst, int base);

Params

  • src: Parse edilicek kaynak
  • dst: Hedef bellek
  • base: Çevrilecek taban
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	char sz[] = "1856892505 17b00a12b -01100011010110000010001101100 0x6fffff";
	char* endptr;
	long int l1, l2, l3, l4;
	
	l1 = strtol(sz, &endptr, 10);
	l2 = strtol(endptr, &endptr, 16);
	l3 = strtol(endptr, &endptr, 2);
	l4 = strtol(endptr, &endptr, 0);
	
	printf("%ld %ld %ld %ld", l1, l2, l3, l4);
	
	return 0;
}

strtold

Sayıların hangi tabanda işleneceği belirtilir. Başarı durumunda string den long double tipine dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
long double strtold(const char* src, char** dst);

Params

  • src: Parse edilicek kaynak
  • dst: Hedef bellek
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	char sz[] = "365.24 29.53";
	char* endptr;
	long double l1, l2;
	
	l1 = strtold(sz, &endptr);
	l2 = strtold(endptr, NULL);
	
	printf("%Lf %Lf", l1, l2);
	
	return 0;
}

strtoll

Sayıların hangi tabanda işleneceği belirtilir. Başarı durumunda string den long long int tipine dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
long long int strtoll(const char* src, char** dst, int base);

Params

  • src: Parse edilicek kaynak
  • dst: Hedef bellek
  • base: Çevrilecek taban
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	char sz[] = "1856892505 17b00a12b -01100011010110000010001101100 0x6fffff";
	char* endptr;
	long long int l1, l2, l3, l4;
	
	l1 = strtoll(sz, &endptr, 10);
	l2 = strtoll(endptr, &endptr, 16);
	l3 = strtoll(endptr, &endptr, 2);
	l4 = strtoll(endptr, &endptr, 0);
	
	printf("%llu %llu %llu %llu", l1, l2, l3, l4);
	
	return 0;
}

strtoull

Sayıların hangi tabanda işleneceği belirtilir. Başarı durumunda string den unsigned long long int tipine dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
unsigned long long int strtoull(const char* src, char** dst, int base);

Params

  • src: Parse edilicek kaynak
  • dst: Hedef bellek
  • base: Çevrilecek taban
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	char sz[] = "1856892505 17b00a12b -01100011010110000010001101100 0x6fffff";
	char* endptr;
	unsigned long long int l1, l2, l3, l4;
	
	l1 = strtoull(sz, &endptr, 10);
	l2 = strtoull(endptr, &endptr, 16);
	l3 = strtoull(endptr, &endptr, 2);
	l4 = strtoull(endptr, &endptr, 0);
	
	printf("%llu %llu %llu %llu", l1, l2, l3, l4);
	
	return 0;
}

strtoul

Sayıların hangi tabanda işleneceği belirtilir. Başarı durumunda string den unsigned long int tipine dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
unsigned long int strtoul(const char* src, char** dst, int base);

Params

  • src: Parse edilicek kaynak
  • dst: Hedef bellek
  • base: Çevrilecek taban
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	char sz[] = "1856892505 17b00a12b -01100011010110000010001101100 0x6fffff";
	char* endptr;
	unsigned long int l1, l2, l3, l4;
	
	l1 = strtoul(sz, &endptr, 10);
	l2 = strtoul(endptr, &endptr, 16);
	l3 = strtoul(endptr, &endptr, 2);
	l4 = strtoul(endptr, &endptr, 0);
	
	printf("%llu %llu %llu %llu", l1, l2, l3, l4);
	
	return 0;
}

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #8

Kasım 16, 2024 Posted by unexpected , , No comments

atof

Başarı durumunda string den double sayısına dönüşüm sağlar. Başarısız durumunda dönüşü 0.0 olarak döner.

Syntax
double atof(const char* str);

Params

  • str: Dönüştürülcek değer
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	printf("%f", atof("3.14"));
	
	return 0;
}

atoi

Başarı durumunda string den int tipine dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
int atoi(const char* str);

Params

  • str: Dönüştürülcek değer
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	printf("%f", atoi("22"));
	
	return 0;
}

atol

Başarı durumunda string den long int tipine dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
long int atol(const char* str);

Params

  • str: Dönüştürülcek değer
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	printf("%ld", atol("22"));
	
	return 0;
}

atoll

Başarı durumunda string den long long int tipine dönüşüm sağlar. Başarısız durumunda dönüşü 0 olarak döner.

Syntax
long long int atoll(const char* str);

Params

  • str: Dönüştürülcek değer
example.cpp
#include <stdlib.h>

int main(int argc, char** argv)
{
	printf("%lld", atoll("22"));
	
	return 0;
}

30 Ağustos 2024 Cuma

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #7

Ağustos 30, 2024 Posted by unexpected , , No comments

malloc

Her hangi bir veri tipinde yer ayırma işlemi yapar. Ayrıca içeriği boş bir değer atanır. Başarılı ise atanan değişkende yer ayırma işlemi gerçekleşir. Başarısız ise NULL olarak dönüş yapar.

Syntax
void* malloc(size_t size)

Params

  • size: Ayrılacak alan boyutu
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	char* buffer;
	int i = 22;
	
	buffer = (char*)malloc(i + 1);
	if(buffer == NULL) return -1;
	
	for(int n = 0; n < i; n++)
		buffer[n] = n + 1 * 'a';
	buffer[i] = '\0';
	
	printf("Random String: %s", buffer);
	free(buffer);
	
	return 0;
}

realloc

Her hangi bir veri tipinde yer ayırma işlemi yapıldıktan sonra yeniden boyutlandırma yapılması için kullanılır. Başarılı ise atanan değişkende yeniden boyutlandırma işlemi gerçekleşir. Başarısız ise NULL olarak dönüş yapar.

Syntax
void* realloc(void* memory, size_t size);

Params

  • memory: Daha önce ayrılmış bellek
  • size: Yeniden boyutlanacak miktar.
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	float* ptr;
	float* new_ptr;
	
	ptr = (float*)malloc(5 * sizeof(float));
	if(ptr == NULL) return -1;
	
	for(int i = 0; i < 5; i++)
		ptr[i] = i * 1.5;
	
	new_ptr = (float*)realloc(ptr, 10 * sizeof(float));
	if(new_ptr == NULL) return -1;
	
	for(int i = 0; i < 10; i++)
		new_ptr[i] = i * 2.5;
	
	for(int i = 0; i < 5; i++)
		printf("%f ", ptr[i]);
	
	printf("\n");
	
	for(int i = 0; i < 10; i++)
		printf("%f ", new_ptr[i]);
	
	return 0;
}

calloc

Array veri tipin de bir yer ayırma işlemi yapar. Ayrıca içerisini sıfır ile doldurur. Başarız durumunda NULL olarak döner.

Syntax
void* calloc(size_t num, size_t size);

Params

  • num: Oluşturulucak element sayısı
  • size: Veri tipi boyutu
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	int* ptr;
	
	ptr = (int*)calloc(22, sizeof(int));
	for(int i = 0; i < 22; i++)
		printf("%d ", ptr[i]);
	free(ptr);
	
	return 0;
}

free

realloc, calloc ve malloc ile oluşturulan bellekleri serbest bırakır.

Syntax
void free(void* memory);

Params

  • memory: Daha önce ayrılmış bellek

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #6

Ağustos 30, 2024 Posted by unexpected , , No comments

fopen

Dosya başarıyla açılırsa FILE* nesnesi döner. Açılamaz ise FILE* null olarak döner.

Syntax
FILE* fopen(const char* file, const char* mode);

Params

  • file: Dosya adı
  • mode: Mod
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	FILE* fptr;
	fptr = fopen("01.txt", "r");
	fclose(fptr);
	
	return 0;
}
Mod Description
r read: Dosya okuma modu. Dosya mevcut olmalıdır.
w write: Yeni bir dosya oluştur. Aynı isimde bir dosya var ise üzerine yazar.
a append: Dosyanın içeriğinin sonundan yazmaya devam eder. Dosya yok ise yeniden oluşturur.
t Dosyanın içeriğinin text olduğunu belirtir.
b Dosyanın içeriğinin binary olduğunu belirtir.
r+ read/update: Dosya okuma modu. Dosya mevcut olmalıdır.
w+ write/update: Yeni bir dosya oluştur. Aynı isimde bir dosya var ise üzerine yazar.
a+ append/update: Dosyanın içeriğinin sonundan yazmaya devam eder. Dosya yok ise yeniden oluşturur.

fclose

Açılan dosya ile tüm ilişkileri keser. Başarıyla kapatılır ise 0 değerini döner.

Syntax
int fclose(FILE* file);

Params

  • file: file pointer
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	FILE* fptr;
	fptr = fopen("01.txt", "r");
	fclose(fptr);
	
	return 0;
}

feof

Açılmış bir dosya içeriğinde dosya sonuna geldiğinde 1 gelmediğinde 0 değerini döner.

Syntax
int feof(FILE* file);

Params

  • file: file pointer
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	FILE* fptr;
	fptr = fopen("01.txt", "r");
	
	int out = feof(fptr);
	printf("Return: %d", out);
	
	fclose(fptr);
	
	return 0;
}

fseek

İmlec konumunu ayarlar. Başarı durmunda 0 döner. Başarısız durumunda -1 döner.

Syntax
int fseek(FILE* file, long offset, int origin);

Params

  • file: file pointer
  • offset: Imlec positon
  • origin: Imlec konumu
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	/// SEEK_SET: Dosya başlangıcı
	/// SEEK_CUR: Dosyanın geçerli konumu
	/// SEEK_END: Dosyanın sonu
	
	FILE* fptr;
	fptr = fopen("01.txt", "w");
	
	fputs("Hello World!", fptr);
	fseek(fptr, 6, SEEK_SET);
	fputs("Hello World! ", fptr);
	
	fclose(fptr);
	
	return 0;
}

fwrite, fread

Dosya içeriğine yazmak/okumak için kullanılır özellikle binary olarak yazdırılır. Başarı durumunda yazdırılan öge boyutunu verir.

Syntax
size_t fwrite(const void* src, size_t size, size_t count, FILE* file);
size_t fread(void* dst, size_t size, size_t count, FILE* file);

Params

  • src: Yazılıcak data
  • size: Yazılacak data boyutu
  • count: Kaç defa yazılacak
  • file: file pointer
example.cpp
#include <stdio.h>

struct data
{
	const char* ch;
	int i;
};

int main(int argc, char** argv)
{
	FILE* fw;
	FILE* fr;
	data dt, dt2 = {0};
	
	dt.ch = "Hi";
	dt.i = 25;
	
	fw = fopen("data.dat", "wb");
	fwrite(&dt, sizeof(data), 1, fw);
	fclose(fw);
	
	fr = fopen("data.dat", "rb");
	fread(&dt2, sizeof(data), 1, fr);
	fclose(fr);
	
	printf("%s, %d", dt2.ch, dt2.i);
	
	return 0;
}

fflush

Başarı durumunda 0 değerini döner.

Syntax
int fflush(FILE* file);

Params

  • file: file pointer
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	FILE* fptr;
	
	fptr = fopen("01.txt", "w");
	for(int i = 'A'; i <= 'Z'; i++)
	{
		printf("%c", fputc(i, fptr));
		fflush(fptr);
	}
	fclose(fptr);
	
	return 0;
}

perror

Dosya Açılamaz ise Hata mesajlarını yazdırır.

Syntax
void perror(const char* str);

Params

  • str: String değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	FILE* fptr;

	fptr = fopen("010.txt", "r");
	if(fptr == NULL)
		perror("Error");
	fclose(fptr);
	
	return 0;
}

ferror

Dosya açıldıktan sonra hata durmunda 1 değerini döner. Aksi taktirde 0 değeri döner.

Syntax
int ferror(FILE* file);

Params

  • file: File Pointer
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	FILE* fptr;
	int out = 0;
	
	fptr = fopen("01.txt", "r");
	if(fptr != NULL)
	{
		fprintf(fptr, "Testing");
		if(ferror(fptr))
			printf("Error Writing File");
	}
	fclose(fptr);
	
	return 0;
}

29 Ağustos 2024 Perşembe

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #5

Ağustos 29, 2024 Posted by unexpected , , No comments

static_assert

Derleme zamanında (compile-time) sabit ifadeleri kontrol etmek için kullanılan bir araçtır. Normal assert gibi çalışır, ancak çalışma zamanında değil, derleme sırasında hata kontrolü yapar.

Syntax
#define static_assert(x, y)

Params

  • x: Koşul (Expression)
  • y: Hata Mesajı (Opsiyonel)
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	static_assert(1 == 2, "Error Messages");
	
	return 0;
}

assert

Bir koşulun doğru olup olmadığını kontrol etmek için kullanılır. Eğer koşul yanlışsa, programı sonlandırır ve hangi koşulun başarısız olduğunu gösteren bir hata mesajı verir.

Syntax
#define assert(x);

Params

  • x: Koşul (Expression)
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	assert(1 == 2);
	
	return 0;
}

_assert, _wassert

Her hangi bir koşul şartı belirtilmeden bir assert messajı çıkarta biliriz.

Syntax
void _assert(const char* msg, const char* file, unsigned line);
void _wassert(const wchar_t* msg, const wchar_t* file, unsigned line);

Params

  • msg: Hata mesajı
  • file: Hatanın olduğu dosya
  • line: Hatanın olduğu satır.
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	_assert("Error Messages", "main.c", 10);
	
	_wassert(L"Error Messages", L"main.c", 10);
	
	return 0;
}

28 Ağustos 2024 Çarşamba

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #4

Ağustos 28, 2024 Posted by unexpected , , No comments

gets

Standart Input dan veri okur değişkene yazar. Başarı durumunda okunan değeri döner. Eğer bir değer boş ise dönüşü null olur. Her hangi bir hata durumda ise feof dönderir.

Syntax
char* gets(char* buf)

Params

  • buf: Buffer değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	char buffer[255];
	char* ptr;
	
	ptr = gets(buffer);
	printf("Buffer: %s - ptr: %s", buffer, ptr);
	
	return 0;
}

fgets

Dosya veya Standart Input dan veri okur değişkene yazar. Başarı durumunda okunan stringi döner. Eğer bir değer boş ise dönüşü null olur. Her hangi bir hata durumda ise feof dönderir.

Syntax
char* fgets(char* buf, int size, FILE* file);

Params

  • buf: Buffer değeri
  • size: Buffer size
  • file: Dosya veya Standart Input
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	char buffer[255];
	char* ptr;
	
	ptr = fgets(buffer, 255, stdin);
	printf("Buffer: %s - ptr: %s", buffer, ptr);
	
	return 0;
}

getc, fgetc

Dosya veya Standart Input dan karakter okur. Başarı durumunda okunan karakteri döner. Eğer bir değer boş ise dönüşü -1 döner. Her hangi bir hata durumda ise feof dönderir.

Syntax
int getc(FILE* file);
int fgetc(FILE* file);

Params

  • file: Dosya veya Standart Input
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	/// 0 - stdin  - Standart Input
    /// 1 - stdout - Standart Output
    /// 2 - stderr - Standart Error
	
	int ch = -1;

	ch = getc(stdin);
	printf("Char: %c", ch);
	
	ch = fgetc(stdin);
	printf("Char: %c", ch);
	
	return 0;
}

getchar, fgetchar

Standart Input dan karakter okur. Başarı durumunda okunan karakteri döner. Eğer bir değer boş ise dönüşü -1 döner. Her hangi bir hata durumda ise feof dönderir.

Syntax
int getchar(void);
int fgetchar(void);
int _fgetchar(void);

Params

  • file: Dosya veya Standart Input
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	/// 0 - stdin  - Standart Input
    /// 1 - stdout - Standart Output
    /// 2 - stderr - Standart Error
	
	int ch = -1;

	ch = getchar();
	printf("Char: %c", ch);
	
	ch = fgetchar();
	printf("Char: %c", ch);
	
	return 0;
}

ungetc

Dosyadan okunan ilk karakteri alır verilen karakter ile değiştirilir. Aynı zamanda fgetc veya getc dönmesini engeller ilk karakteri almasını sağlar. Başarı durumunda geri konulan karakteri iade eder. Her hangi bir hata durumda ise feof dönderir.

Syntax
int ungetc(int ch, FILE* file);

Params

  • ch: Karakter
  • file: File Pointer
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	FILE* fptr;
	char dest[1024];
	int ch = 0;
	
	fptr = fopen("01.txt", "r");
	if(fptr == NULL)
	{
		perror("Error");
		return -1;
	}
	
	while(!feof(fptr))
	{
		ch = fgetc(fptr);
		(ch == '#') ? printf("%c - ", ungetc('+', fptr)) : printf("%c - ", ungetc(ch, fptr));
		fgets(dest, 1024, fptr);
		printf("%s", dest);
	}
	
	fclose(fptr);
	
	return 0;
}

10 Ağustos 2024 Cumartesi

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #3

Ağustos 10, 2024 Posted by unexpected , , No comments

puts

Standart output dan çıktı verir. Başarı durumunda sıfır, başarısız durumunda negatif değer döner. Her hangi bir hata durumda ise ferror dönderir.

Syntax
int puts(const char* str);

Params

  • str: String değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	puts("Hello World!");
	
	return 0;
}

fputs

Dosya veya Standart Input, Output'a yazar. Başarı durumunda posiztif, başarısız durumunda negatif değer döner.

Syntax
int fputs(const char* str, FILE* file);

Params

  • str: String değeri
  • file: Stream değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	/// 0 - stdin  - Standart Input
    /// 1 - stdout - Standart Output
    /// 2 - stderr - Standart Error
	
	fputs("Hello World!\n", stdout);
	fputs("Hello World!", __acrt_iob_func(1));
	
	return 0;
}

putc, fputc

Dosya veya Standart Input, Output'a char olarak çıktı yapar. Başarı durumunda yazılan karakteri döner. Başarız durumda -1 değerini döner.

Syntax
int putc(int ch, FILE* file);
int fputc(int ch, FILE* file);

Params

  • ch: Char değeri
  • file: Stream değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	/// 0 - stdin  - Standart Input
    /// 1 - stdout - Standart Output
    /// 2 - stderr - Standart Error
	
	for(int i = 65; i <= 90; i++)
		putc(i, stdout);
		
	printf("\n");
	
	for(int i = 97; i <= 122; i++)
		putc(i, __acrt_iob_func(1));
	
	return 0;
}

putchar, fputchar

Standart Output'a char olarak çıktı yapar. Başarı durumunda yazılan karakteri döner. Başarız durumda -1 değerini döner.

Syntax
int putchar(int ch);
int fputchar(int ch);

Params

  • ch: Char değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	for(int i = 65; i <= 90; i++)
		putchar(i);
		
	printf("\n");
	
	for(int i = 97; i <= 122; i++)
		putchar(i);
	
	return 0;
}

5 Ağustos 2024 Pazartesi

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #2

Ağustos 05, 2024 Posted by unexpected , , No comments

scanf

Formatlanmış olarak bir input yapılır. Başarı durumunda okuduğu input sayısını dönderir. Her hangi bir hata durumda ise ferror veya feof dönderir.

Syntax
int scanf(const char* format, ...);

Params

  • format: String Değeri
  • varargs: Array Değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	char ch[5];
	int i = 0, wi = 0, count = 0;
	
	count = scanf("%s %d", &ch, &i);
	printf("Chars: %s Int: %d Count: %d\n", ch, i, count);
	
	return 0;
}

sscanf

Verilen bir src kaynağındaki veriyi formatlanmış olarak bir input alır ve bu veriyi belirlenen değişkenlere atama yapılır. Başarı durumunda ise okunan değer sayısını döner. Başarısız -1 değeri döner

Syntax
int sscanf(const char* src, const char* format, ...);

Params

  • src: Buffer değer
  • format: String değeri
  • varargs: Array değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	char buf[50];
	int cx, num;
	float pi;
	
	const char* ch = "Hello_World! 21 3.14";
	cx = sscanf(ch, "%s %d %f", buf, &num, &pi);
	printf("cx: %d - buf: %s - num: %d - pi: %f\n", cx, buf, num, pi);
	
	return 0;
}

fscanf

Formatlanmış bir metni dosya veya standart input output'dan olur. Başarı durumunda okuduğu input sayısını dönderir. Her hangi bir hata durumda ise ferror ve feof dönderir.

Syntax
int fscanf(FILE* file, const char* format, ...);
  • file: Stream akışı
  • format: String değeri
  • varargs: Array değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	/// 0 - stdin  - Standart Input
    /// 1 - stdout - Standart Output
    /// 2 - stderr - Standart Error
	
	char buf[50];
	int fs;
	
	fs = fscanf(stdin, "%s", &buf);
	printf("fs: %d - buf: %s", fs, buf);
	
	return 0;
}
Specifier Output Example
%d or %i Signed Decimal Integer 392
%u Unsigned Decimal Integer 7235
%o Unsigned Octal 610
%x Unsigned Hexadecimal Integer 7fa
%X Unsigned Hexadecimal Integer (Uppercase) 7Fa
%f Decimal Floating Point (Lowercase) 392.65
%F Decimal Floating Point (Uppercase) 392.65
%e Scientific Notation (Mantissa/Exponent) (Lowercase) 3.9265e+2
%E Scientific Notation (Mantissa/Exponent) (Uppercase) 3.9265e+2
%g Use the shortest representation: %e or %f 392.65
%G Use the shortest representation: %E or %F 392.65
%a Hexadecimal Floating Point (Lowercase) -0xc.90fep-2
%A Hexadecimal Floating Point (Uppercase) -0XC.90FEP-2
%c Character a
%s String of Characters sample
%p Pointer Address b8000000
%n Nothing Printed
%% % Karakteri %

1 Ağustos 2024 Perşembe

C/CPP - Fonksiyonlar ve Kullanım Yöntemleri #1

Ağustos 01, 2024 Posted by unexpected , , No comments

printf

Formatlanmış bir metni standart çıktıya (stdout) yazar. Başarı durumunda yazılan karakter uzunluğunu döndürür. Her hangi bir hata durumda ise ferror ve negatif bir sayı döner.

Syntax
int printf(const char* _Format, ...);

Params

  • format: String değeri
  • varargs: Array değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	printf("Characters: %c %c \n", 'a', 65);
	printf("Decimals: %d %ld\n", 1977, 650000L);
	printf("Preceding with blanks: %10d \n", 1977);
	printf("Preceding with zeros: %010d \n", 1977);
	printf("Some different radices: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
	printf("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
	printf("Width trick: %*d \n", 5, 10);
	printf("%s \n", "A string");
    
	return 0;
}

fprintf

Formatlanmış bir metni dosya veya standart input output'a yazar. Başarı durumunda yazılan karakter uzunluğunu döndürür. Her hangi bir hata durumda ise ferror ve negatif bir sayı döner.

Syntax
int fprintf(FILE* file, const char* format, ...);

FILE* __acrt_iob_func(unsigned index);

Params

  • file: Stream akışı
  • format: String değeri
  • varargs: Array değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	/// 0 - stdin  - Standart Input
    /// 1 - stdout - Standart Output
    /// 2 - stderr - Standart Error

	fprintf(stdout, "Hello World!");
    fprintf(__acrt_iob_func(1), "Hello World!");
    
	return 0;
}

sprintf

Formatlanmış bir metni stream tarafından işaret edilen tampon bir değikende tutulur. İçerikten sonra otomatik olarak sonlandırıcı bir null karakteri eklenir. Başarı durumunda yazılan toplam karakter sayısını döndürür. Başarısızlık durumunda negatif bir sayı döndürülür.

Syntax
int sprintf(char* stream, const char* format, ...);

Params

  • stream: Tampon değeri
  • format: String değeri
  • varargs: Array değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	wchar_t buf[50];
	char buffer[50];
	int cx;
	
	cx = sprintf(buffer, "The half of %d is %d", 60, (60 / 2));
	printf("cx: %d - Buffer: %s", cx, buffer);
    
	return 0;
}

snprintf

Formatlanmış bir metni stream tarafından işaret edilen tampon bir değikende tutulur. İçerikten sonra otomatik olarak sonlandırıcı bir null karakteri eklenir. Başarı durumunda yazılan toplam karakter sayısını döndürür. Başarısızlık durumunda negatif bir sayı döndürülür.

Syntax
int snprintf(char* stream, size_t n, const char* format, ...);

Params

  • stream: Tampon değeri
  • n: Tampon boyutu
  • format: String değeri
  • varargs: Array değeri
example.cpp
#include <stdio.h>

int main(int argc, char** argv)
{
	wchar_t* buffer[150];
	char buf[150];
	int cx, cx2;
	
	cx = snprintf(buf, 150, "The half of %d is %d", 60, (60 / 2));
	cx2 = snprintf((buf + cx), (150 - cx), ", and the half of that is %d.", (60 / 2 / 2));
	printf("cx: %d - cx2: %d - Buffer: %s", cx, cx2, buf);
    
	return 0;
}
Specifier Output Example
%d or %i Signed Decimal Integer 392
%u Unsigned Decimal Integer 7235
%o Unsigned Octal 610
%x Unsigned Hexadecimal Integer 7fa
%X Unsigned Hexadecimal Integer (Uppercase) 7Fa
%f Decimal Floating Point (Lowercase) 392.65
%F Decimal Floating Point (Uppercase) 392.65
%e Scientific Notation (Mantissa/Exponent) (Lowercase) 3.9265e+2
%E Scientific Notation (Mantissa/Exponent) (Uppercase) 3.9265e+2
%g Use the shortest representation: %e or %f 392.65
%G Use the shortest representation: %E or %F 392.65
%a Hexadecimal Floating Point (Lowercase) -0xc.90fep-2
%A Hexadecimal Floating Point (Uppercase) -0XC.90FEP-2
%c Character a
%s String of Characters sample
%p Pointer Address b8000000
%n Nothing Printed
%% % Karakteri %