Herkese selamlar 👋🏽,

Umarım gününüz güzel geçiyordur. Bugün sizlere evolarımda gösterdiğim get-next-line için yaptığım python text dosyası oluşturucusunu göstermek istiyorum.

Kodu oldukça basit sadece 4 line (gerçekten).

Python bilgisine ihtiyacınız yok :D

Evolarda hepimizden main istiyorlar ve genel olarak yazılan mainler şuna benzer:

	#include <fcntl.h>
	#include <stdio.h>

	int   main(int argc, char **argv)
	{
	  int   fd;
	  char *c;

	  fd = open("test.txt", O_RDWR);
	  c = get_next_line(fd);
	  //tüm lineları tek seferde okutmak istediğim için şartı böyle yaptım 
	  //dosya sonuna geldğimiz zaman fonksiyonumuz 0 dondürecek ve döngüden çıkacak
	  while(c)
	  {
	    printf("%s",c);
	    free(c);
	    c = get_next_line(fd);
	  }
	  // Leak kontrolü için kullanabilirsiniz
	  //system("leaks a.out");
	}

Peki test.txt dosyasını nasıl oluşturucaz

Bunun için biraz python kullanabiliriz 😉

Öncelikle open fonksiyonu ile dosyayı tanımlamamız gerekiyor.

open fonksiyonu hakkında daha fazla bilgi için

	fd = open("test.txt", "w")

Open fonksiyonun aldığı ilk değer “dosyaadı.uzantı” ikincisi ise üzerine yazacağımız için “w” yazdık

open fonksiyonu flagleri

Dosyayı okuduk şimdi de write ile yazma işlemini yapalım.

	for i in range(1000):
		fd.write(f"satır numarası : {i}\n")

Range‘in içine istedğiniz satır sayısı numarasını yazabilirsiniz. Ben 1000 yazdım.

write(f"yazı {degisken}") ile de i’nin değerini satır numarası : 1 gibi yazdırdık.

Yazma işlemini bitirdik şimdi de close ile işlemi bitirebiliriz.

	fd.close()

Kodumuzun son hali şu şekilde.

	fd = open("test.txt", "w")
	for i in range(1000):
	fd.write(f"satır numarası : {i}\n")
	fd.close()

NOT: Dosyayı önceden oluşturmak zorunda değilsiniz. Dosya yoksa bile kod çalıştığında otomatik oluşturuluyor.

Sırada çalıştırması var

Çalıştırması oldukça basit tek yapmanız gereken

	python3 doysyaadi.py

(Bonus) main örnekleri

Bonus olarak size bikraç main örneği göstermek istiyorum. Maini yazarken argv kullanınca çok tatlı oluyor 😄

	#include <fcntl.h>
	#include <stdio.h>
	
	// argv ile dosya adını terminalden alabiliriz
	int   main(int argc, char **argv)
	{
	  int   fd;
	  char *c;
	
	  //terminalden girilen dosyayı okutuyoruz.
	  fd = open(argv[1], O_RDWR);
	  c = get_next_line(fd);
	  while(c)
	  {
	  	printf("%s",c);
		// leak oluşmaması için yazdıktan sonra freeliyoruz.
	    	free(c);
	    	c = get_next_line(fd);
	  }
	  // Leak kontrolü için
	  //system("leaks a.out");
	}

Çalıştırması da oldukça basit tek yapmanız gereken:

	./a.out dosyaadi

Bugünlük benden bu kadar yazdığım koduları github hesabımda paylaştım. Sorularınızı slackten sorabilirsiniz :D