C Çalışması Uygulamaları

Sınav öncesi yaptığımız C çalışmasının örnek kodları. Tek ve çok boyutlu diziler, dosya okuma, yazma, fprintf, fscanf, bit işlemleri, struct, union ve enum örnekleri gibi konular var.

  1. C’de dizinin boyutunu belirlemek ve fonksiyonlara dizi göndermek
#include <stdio.h>

void topla(int aktar[]){
  int i, toplam = 0, boyut = 0;
  boyut = sizeof(aktar)/sizeof(int);
  for(i = 0; i < boyut; i++)
    toplam += aktar[i];
  printf("Bulunan toplam: %d\n", toplam);
}

void EkranaBas(int dizi[5]);

int main(void){
  int aktar[] = {1,3,5,7,9};

  topla(aktar);
  EkranaBas(aktar);

  return 0;
}

void EkranaBas(int dizi[5]){
  int i = 0;
  for(i = 0; i < BOYUT; i++)
    printf("%d. Eleman:  %d\n", i+1, dizi[i]);
}
  1. C’de çok boyutlu diziler ve dizileri matris şeklinde ekrana bastırmak
#include <stdio.h>
#include <time.h>
#include <stdlib.h>

void ekranaBas(int [10][20]);

int main(void){
  srand(time(NULL));

  int a[10][20];
  int i,j;
  for(i = 0; i < 10; i++){
    for(j = 0; j < 20; j++){
      a[i][j] = (rand()%100) + 1;
    }
  }
  ekranaBas(a);

  return 0;
}

void ekranaBas(int a[10][20]){
  int i,j;
  for(i = 0; i < 10; i++){
    for(j = 0; j < 20; j++){
      printf("%4d",a[i][j]);
    }
    printf("\n");
  }
}
  1. C’de dizileri kullanarak Bubble Sorting
#include <stdio.h>

int main(void){
  int dizi[10] = {8,6,12,24,4,5,6,432,434,765};
  int i,j, temp;
  for(i = 0; i < 10; i++){
    for(j = i; j < 10; j++){
      if(dizi[i]>dizi[j]){
        temp = dizi[i];
        dizi[i] = dizi[j];
        dizi[j] = temp;
      }
    }
  }
  for(i = 0; i < 10; i++){
    printf("%d\n",dizi[i]);
  }

  return 0;
}
  1. C’de fonksiyonlara pointer (işaretçi) göndermek ve değişkenlerin değerlerini dışarıdan değiştirmek
#include <stdio.h>

void kareal(int* x){
  *x = (*x) * (*x);
}

int main(void){
  int a = 10;
  kareal(&a);
  printf("Karesi: %d\n", a);

}
  1. C’de fonksiyonlara fonksiyon göndermek – Argüman olarak fonksiyon göndermek – Fonksiyon tutan pointerlar
#include <stdio.h>

void hesapla(int a, int b, int (*f)(int f, int g)){
  int c;
  c = (*f)(a ,b);
  printf("%d\n",c);
}

int toplama(int x, int y){
  return x+y;
}

int cikarma(int x, int y){
  return x-y;
}

int main(void){
  int abc = 100;
  int def = 200;
  hesapla(abc, def, toplama);
  hesapla(abc, def, cikarma);

  return 0;
}
  1. C ile ASCII tablosunu yazdırmak – Sayıların ASCII değerleri
#include <stdio.h>
#include <string.h>
int main(void){
  int i = 0;
  for( i = 0; i < 256; i++){
    putchar(i);
  }

  return 0;
}
  1. Stringlere değer atamak – Kullanıcıdan stringe değer almak
#include <stdio.h>
#include <string.h>
int main(void){
  char isim[100] = "Guray yildirim";
  puts(isim);

  printf("%s\nismi gir:", isim);
  scanf("%s", isim);

  puts(isim);
  return 0;
}
  1. C’de stringleri karşılaştırmak, eşitlemek, ard arda eklemek – strcpy, strcmp, strcat fonksiyonları
#include <stdio.h>
#include <string.h>
int main(void){
  char isim1[20] = "Guray";
  char isim2[20] = "Eray";
  char karma[100] = "İsimler: ";  
  int a;

  if(strcmp(isim1,isim2) == 0)
    printf("Karşılaştırma sonucu: Eşitler.\n");

  strcat(karma,isim1);
  strcat(karma, " - ");
  strcat(karma,isim2);
  puts(karma);

  strcpy(isim1,isim2);
  puts(isim1);
  puts(isim2);

  a = strcmp(isim1,isim2);
  printf("Karşılaştırma sonucu: %d\n",a);

  if(strcmp(isim1,isim2) == 0)
    printf("Karşılaştırma sonucu: Eşitler.\n");

  return 0;
}
  1. Elle oluşturulan basit string – Karakter dizisinden string oluşturmak
#include <stdio.h>

int main(void){
  char str[10];
  str[0] = 'G';
  str[1] = 'u';
  str[2] = 'r';
  str[3] = 'a';
  str[4] = 'y';
  str[5] = '\0';

}
  1. C’de basit struct örneği – Struct lara giriş
#include <stdio.h>
#include <string.h>

struct calisan{
  int id;
  char adsoyad[100];
  char tel[12];
};

int main(void){
  struct calisan kisi1, kisi2;

  strcpy(kisi1.adsoyad, "Kişi ismi 1" );
  strcpy(kisi2.adsoyad, "Kişi ismi 2" );
  puts(kisi1.adsoyad);
  puts(kisi2.adsoyad);

  kisi1.id = 1907;
  kisi2.id = 1903;
  printf("%d - %d\n", kisi1.id, kisi2.id);
  return 0;
}
  1. Fonksiyonlara struct atamak, structları pointer ile fonksiyona göndermek, structların pointer ile kullanım örneği
#include <stdio.h>
#include <string.h>

struct calisan{
  int id;
  char adsoyad[100];
  char tel[12];
};

typedef struct calisan kisi;
void f(kisi *yapi);

int main(void){
  kisi kisi1, kisi2;

  strcpy(kisi1.adsoyad, "Kişi ismi 1" );
  strcpy(kisi2.adsoyad, "Kişi ismi 2 );
  kisi1.id = 1907;
  kisi2.id = 1903;
  printf("%d - %d\n", kisi1.id, kisi2.id);

  f(&kisi1);
  printf("%d\n", kisi1.id);
  return 0;
}

void f(kisi *yapi){
  puts(yapi->adsoyad);
  (*yapi).id = 10;
  printf("%d\n", yapi->id);
}
  1. C’de typedef nedir ve ne işe yarar, union ların basit kullanım örneği
#include <stdio.h>

typedef unsigned char degisken; /* degisken a= 3; eşittir unsigned char a = 3;*/

union birlik{
  int x;
  float y;
  //char z[20];
};

int main(void){
  union birlik orn;

  orn.x = 5;
  printf("%d\n", orn.x);
  orn.y = 10.3;
  printf("%d\n", orn.x);
  printf("%f\n", orn.y);
  return 0;
}
  1. C’de bit işlemleri, sayıların ikilik sistemde yazılması, and, or, not, xor operatörlerinin açıklamaları bitlerin fonksiyonlara gönderilmesi
#include <stdio.h>

typedef unsigned char degisken; /* degisken a= 3; = unsigned char a = 3;*/
void goster(unsigned char sayi);

int main(void){
  /*
  & and. 11 & 10 => 10
  | or. 110 | 100 => 110
  ^ xor. 1100 ^ 1010 => 0110
  ~ not. 1010 => 0101
  01010101
  */
  unsigned char x = 123;
  goster(x);

  return 0;
}

void goster(unsigned char sayi){
  unsigned int maske = 1 << 7;
  int i;
  for( i = 1; i <= 8; i++){
    putchar(sayi&maske?'1':'0');
    sayi <<= 1;
    if(i%8 == 0)
      putchar(' ');
  }
}
  1. C’de enum ne işe yarar? Örnek enum kullanımı. Enum nasıl tanımlanır?
#include <stdio.h>

enum mevsimler{SET_BY_DEFAULT, CLOSED_BY_SYSTEM, SONBAHAR, KIS};

int main(void){

  int x = 1;
  switch(x){
  case SET_BY_DEFAULT:
    printf("Varsayılan\n");
    break;
  case CLOSED_BY_SYSTEM:
    printf("Kapandı\n");
    break;
  }

  return 0;
}
  1. C ile dosya açma ve kapama işlemleri. C’de dosya içerisine basit yazı nasıl yazılır? FILE türü örneği.
#include <stdio.h>

int main(void){
  FILE *yaz, *oku;
  if((yaz = fopen("dosya.txt", "w")) == NULL){
    printf("Dosya açılamadı.");
    return 1;
  }
  /* write dosya yoksa oluşturur, varsa siler tekrar oluşturur.
  append dosya yoksa oluşturur, varsa silmez, sonuna ekler. */
  fprintf(yaz, "Merhaba dünya!\nby Birisi.");

  fclose(yaz);

  return 0;
}
  1. fprintf ve fscanf fonksiyonlarına örnekler, fprintf ile dosyaya veri yazma örneği ile fscanf ile dosyadan basit veri okuma örneği
#include <stdio.h>

int main(void){
  FILE *yaz, *oku;
  int n, dizi[5], i;
  if((oku = fopen("data.txt", "r")) == NULL){
    printf("Dosya açılamadı.");
    return 1;
  }
  /* write dosya yoksa oluşturur, varsa siler tekrar oluşturur.
  append dosya yoksa oluşturur, varsa silmez, sonuna ekler. */
  fscanf(oku, "%d", &n);
  printf("%d tane sayı okunacak.", n);

  for( i = 0; i < n; i++ ){
    fscanf(oku, "%d", &dizi[i]);
  }
  for(i = 0; i < n; i++){
    printf("\n%d\n", dizi[i]);
  }

  fclose(oku);

  return 0;
}
  1. C’de dosya bitene kadar işlem yapmak, fprintf ve fscanf ile dosya sonuna kadar yapılan işlemler
#include <stdio.h>

int main(void){
  FILE *yaz, *oku;
  int n, dizi[5], i;
  if((oku = fopen("data.txt", "r")) == NULL){
    printf("Dosya açılamadı.");
    return 1;
  }
  /* write dosya yoksa oluşturur, varsa siler tekrar oluşturur.
  append dosya yoksa oluşturur, varsa silmez, sonuna ekler. */
  fscanf(oku, "%d", &n);
  printf("%d tane sayı okunacak.", n);

  while(!feof(oku)){
    fscanf(oku, "%d", &n);
    printf("%d\n",n);
  }

  fclose(oku);

  return 0;
}
  1. Struct lardan dosya oluşturmak, C’de ikilik(binary) sistemde dosya oluşturma örneği. fread, fwrite ve fseek fonksiyonları hakkında örnek kod:
#include <stdio.h>
#include <string.h>

struct eleman{
  int i;
  char ad[100];
};

int main(void){
  FILE *yaz, *oku;
  int n, dizi[5], i;
  if((yaz = fopen("veriler.db", "wb+")) == NULL){
    printf("Dosya açılamadı.");
    return 1;
  }
  struct eleman kisi;

  for(i = 0; i < 100; i++){
    kisi.i = i;
    strcpy(kisi.ad, "Varsayilan");
    fwrite(&kisi, sizeof(kisi), 1, yaz);
  }
  /* rewind(dosya); */
  fseek(yaz, sizeof(kisi)*5, SEEK_SET);/*_END SONDAN, _CUR ŞU AN */
  fread(&kisi, sizeof(kisi),1,yaz);
  printf("%d - %s", kisi.i, kisi.ad);

  fclose(yaz);

  return 0;
}

 

 

 
comments powered by Disqus