PDA

Tam Sürümünü Görmek İçin : ios bitlerinin c karşılıkları


sckz
25/05/2005, 21:37
şimdi sorunlarımdan biri :

cin.unsetf(ios::skipws); // bunun zi deki karşılığı nedir?

int sayi;
while (true)
{
cin.unsetf(ios::skipws);
cin >> sayi;
if (sayi < 2) cin.clear(ios::failbit);
if (cin.good())
{
cin.ignore(10, '\n');
break;
}
cin.clear();
cin.ignore(10, '\n');
cout << "Gecersiz girdi !" << endl;
}

gibi bir kodun c karşılığı nedir?

birde malloc(), free() gibi fonksiyonların kullanımına ilişkin bir-iki satırlık örnek verirseniz sevinirim (new ve delete in kullanımını biliyorum ama c karşılığı lazım)...


acehreli
25/05/2005, 22:02
ignore: Girisi temizlemek icin, C'de karakter kalmayana kadar okumaktan baska care yoktur. Bazi ortamlar fflush'i sunarlar ama fflush'in giris akimlariyla kullanilmasi standart degildir.

digerleri: Bilmiyorum ama belki fcntl'dan yola cikarak bir seyler bulunabilir.

malloc/free, new/delete'in tam karsiliklari degildir cunku malloc/free yalin bellek ile ilgilenirler, new/delete nesne kurma/bozma ile...

new/delete'in esdegerleri su C programindaki Dizgi_yeni/Dizgi_sil'in esdegerleri olarak gorulebilirler. (Hata denetimini gozardi ettim...)


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


typedef struct
{
size_t uzunluk;
char * karakterler;
} Dizgi;

/* kurucu islev (constructor) */
void Dizgi_kur(Dizgi * dizgi, char const * deger)
{
dizgi->uzunluk = strlen(deger);
dizgi->karakterler = malloc(dizgi->uzunluk + 1);
strcpy(dizgi->karakterler, deger);
}

/* bozucu islev (destructor) */
void Dizgi_boz(Dizgi * dizgi)
{
free(dizgi->karakterler);
}

/* Dizgi'yi kullanan bir islev */
void Dizgi_goster(Dizgi const * dizgi)
{
printf("karakterler: %s\n", dizgi->karakterler);
}

/* new'un esdegeri */
Dizgi * Dizgi_yeni(char const * deger)
{
Dizgi * dizgi = malloc(sizeof(Dizgi));
Dizgi_kur(dizgi, deger);
return dizgi;
}

/* delete'in esdegeri */
void Dizgi_sil(Dizgi * dizgi)
{
Dizgi_boz(dizgi);
free(dizgi);
}

int main()
{
Dizgi otomatik_dizgi;
Dizgi * dinamik_dizgi = 0;

/* kurma */
Dizgi_kur(&otomatik_dizgi, "otomatik");
dinamik_dizgi = Dizgi_yeni("dinamik");

/* kullanim */
Dizgi_goster(&otomatik_dizgi);
Dizgi_goster(dinamik_dizgi);

/* temizlik */
Dizgi_sil(dinamik_dizgi);

/* bu cagri C++'ta derleyici tarafindan
"otomatik" olarak yapilir */
Dizgi_boz(&otomatik_dizgi);

return 0;
}


Ali

ceeyt
25/05/2005, 23:24
http://www.alegsa.com.ar/Visitas/i43/Malloc%20vs%20new%20for%20pod%20types.php

Burada da benzer bir seyler var - new,malloc ile ilgili - , belki bir goz atmak istersin.