Sic Parvis Magna

30 Ağustos 2024 Cuma

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;
}

0 comments:

Yorum Gönder