BG MVC Model View Controller eğitim serisi yayında...

Ana sayfa > Programlama > C Programlama > C örnek kodlar > c_ornek00004

C örnek kodlar

Bir metin dosyasının boyutunu alarak, tek bir komutla tüm içeriği okuma ve ekrana yazma

Aşağıdaki program, oluşturduğu bir metin dosyasına 20000 adet karakter yazdıktan sonra kullandığı fonksiyon ile dosya boyutunu alır, bu boyutun bir fazlası değerde dinamik bellek tahsisi yaparak, fread() fonksiyonu ile dosyanın tamamını bir defada okur, dosyadan okunan karakter sayısını ve dosya içeriğini ekrana yazar.


#include <stdio.h>
#include <stdlib.h>

void printFile(const char* file);

int main(void)
{
  FILE *fp;
  int id;

  /* Bir metin dosyası oluşturma */
  fp = fopen ("deneme.txt", "w");
  /* Metin dosyasına 1000 adet a karakteri yazma */
  for (id=0; id<20000; id++) fputc ('a', fp);
  /* Dosya kapatma */
  fclose(fp);

  /* Dosyayı yazdırma */
  printFile("deneme.txt");

  return 0;
}

void printFile(const char* file)
{
  FILE *fp;
  long int fsize=0, rsize=0;
  char *pfile;

  /* Dosyayı okuma için açma */
  fp=fopen(file, "r");
  /* Dosya sonuna erişme */
  fseek(fp, 0, SEEK_END);
  /* Dosyanın aktif konum yani dosya sonu değerini alma */
  fsize=ftell(fp);
  if(fsize==-1) return;
  /* Dosya aktif konumunu başa alma */
  fseek(fp, 0, SEEK_SET);
  /* Dinamik bellek tahsisi */
  pfile = (char *) malloc((fsize+1) * sizeof(char));
  /* Dosya içeriğini okuma */ 
  rsize = fread (pfile, sizeof(char), fsize, fp);
  pfile[fsize] = '\0';

  printf("Dosyadan okunan karakter sayısı: %ld\n\n", rsize);
  printf("%s", pfile);

  /* Dosya kapatma */
  fclose (fp);
  /* Bellek boşaltma */
  free(pfile);
}