Tam Sürümünü Görmek İçin : sozcuk girme. kafai yijem
pupil_uni
21/05/2007, 15:04
arakdaslar yaa uyus oldum...
scanf("%d",&a);
bu sekilde sayi alabiliyoruz...
scanf("%c",&a); (bu sekilde dersek 1 karakter alio...)
ama ben c karakterine aylin i tanimlamak istiyorum mesela nasil olcak?
getch(""); filan cozemedim...
yardim pls
PlayG7SeveN
21/05/2007, 15:13
char a[10];
sanırım böyle bi tanımlama yapman gerekiyordu
acehreli
21/05/2007, 17:23
pupil_uni, "aylin"i tek bir karaktere alamayacagini anlaman gerek. Olsa olsa PlayG7Seven'in gosterdigi gibi bir karakter dizisine alabilirsin.
Ama scanf, '%c' belirteci kullanildiginde yine tek bir karakter okur.
Ali
pupil_uni
21/05/2007, 18:56
ama ozman da kullanicidan dizileri kullanmak icin once kac harfli isim girecegini soran kod yazilmali degilmi?
yani damla yazacaksa program once soracak kac harfli isim girilecek daha sora diziyi ona gore kuracagim ...
yada her harften sonra entere basmasini siteyecegim ama bunlar cok kullanissiz olur ikiside :S.
daha bi isim bile giremiorum yaa :S.
buna ihtiyacim olmamisti cok program yazdim.... bunu nasil yapabilirs yardim pls
quasimodo
21/05/2007, 19:15
dizilerin buyuklugunu derleme zamaninda vermen gerekiyor yani
once kac harf girilecegini ogrenip sonra diziyi kuramazsin.
char * name;
gets(name);
char * i her elemani bir karakter olar bir karakter
dizisi seklinde dusunebilirsin.
gets() fonksiyonuda senin girecegin ismi bellekte
guvenli bir yere yerlestirir sonuna '\0' karakterini koyar
ve baslangic adresini o icinde verdigin isaretciye yerlestirir.
Bu diziyle daha sonra ne yapacagini bilmiyorum ama
elemanlarini degistirmeye calisma :)
pupil_uni
21/05/2007, 20:25
tesekkur ederim quasimodo (http://forum.ceviz.net/member.php?u=56425). suan deneme sansim yok. deneyecegim olacaktir istedigim buydu. cok tesekkur ederim. ozellikle biyerde kullanma yok arkadas bi program istedi onun icin lazimdi. ama ogrendigim iyi oldu merak ettigim bi olaydi bu...
farkli diller ile TR arasinda bi projem war cok isime yariyacak bi kod bu.
tekrar cok saol +rep
acehreli
21/05/2007, 21:00
pupil_uni, girilecek olan karakterleri bastan bilememek cok dogal bir sorundur. C'nin bu konuda hicbir yardimda bulunamiyor olmasi da onun cok bildik kisitlamalarindan. C++ gibi ust duzey dillerin bazi yararlari da bu konudadir. Ben Stroustrup'un tam da bu konuyu anlatarak baslayan bir yazisini cevirmistim:
http://acehreli.org/turkcecpp/cpp_ogrenmek.html
O yazinin dilini hic begenmiyorum ama senin bahsettigin sorunun dogru bir cozumunu ve bunun C'de ne kadar zor oldugunu gosterir.
Dikkat: gets cozum degil, tam tersine, kullanilmamasi gereken bir islevdir. pupil_uni'nin aradigi cozum degildir. Bellekte guvenli bir yer ayirmaz. quasimodo yanlis bir kod oneriyor. :(
Ali
Dikkat: gets cozum degil, tam tersine, kullanilmamasi gereken bir islevdir. pupil_uni'nin aradigi cozum degildir. Bellekte guvenli bir yer ayirmaz. quasimodo yanlis bir kod oneriyor. :(
Ali
Siz klavyeden girilen 3 adet enter'ı okutabilceğimize değinmiştiniz bir konuşmamızda, bence bu sorunun da kolay çözümü orada gizli karakter karakter okutup concat,strcpy benzeri fonlsiyonlarla bir while döngüsünde birleştirip diziyi alamazmıyız ;)
#include <stdio.h>
#define HARF_ICIN_YER 3
int main(int argc, char *argv[])
{
int sayi;
char harf[HARF_ICIN_YER];
int kacinci = 0;
printf("sayi girin:");
fflush(stdout);
scanf(" %d",&sayi);
printf("devam(E/H) ? ");
fflush(stdout);
while (kacinci < HARF_ICIN_YER) {
char karakter;
scanf("%c", &karakter);
printf("okudum: %d\n", karakter);
if (karakter == '\n') {
harf[kacinci] = karakter;
++kacinci;
printf("%d tane okudum\n", kacinci);
}
}
return 0;
}
copyright (c) 2006 acehreli ;)
tek karakterden oluşan bir string tanımlayıp while ı enter ile kırsak while içinde strcpy() yapsak okuduğumuzun tek karakter olduğunu biliyoruz, ekleyeceğimiz stringinde boyunu strlen den alırız gibi geldi bana.
quasimodo
22/05/2007, 15:03
gets() Bellekte guvenli bir yer ayirmaz.
Pardon cok pardon sonradan okuyunca bende farkina vardim aklim
baska yere gitmis. Utaniyorum kendimden :(
belirsiz uzunlukta sözce okumak için şu işlevi kullanabilirsin:
char * scan_unlimited_string(char *ptr){
int k=0;
ptr=malloc(1);
scanf("%c",&ptr[k]);
while( ptr[k]!='\n'){
k++;
ptr=realloc(ptr,k+1);
scanf("%c",&ptr[k]);
}
ptr[k]='\0';
return ptr;
}
(malloc ve realloc işlevlerini kullanır ,bu yüzden stdlib.h dosyası dahil edilmeli yanlış hatırlamıyorsam)
kullanım örneği:
char *satir;
satir=scan_unlimited_string(satir);
arakdaslar yaa uyus oldum...
scanf("%d",&a);
bu sekilde sayi alabiliyoruz...
scanf("%c",&a); (bu sekilde dersek 1 karakter alio...)
ama ben c karakterine aylin i tanimlamak istiyorum mesela nasil olcak?
getch(""); filan cozemedim...
yardim pls
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.