Ç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.
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.
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);
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.
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);
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.
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.
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.
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);
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);
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);
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.
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.
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.
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.
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.
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.
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, ...);
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;
}
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.
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;
}