Takıldığın yer olursa sorarsın.
|
Tecrübeli bir cracker'ı calloc ile mi engelleyeceksin? Güvenli endişesi duyulan projelerde zaten uzman desteği alınır. Öyle onu bunu kullanma demekle güvenlik sağlanmaz. Adamlar bu işlere milyon dolarlar harcadığı halde yetersiz kalıyor.
İyi olur.
Burada güvenlikle ilgili herhangi birşey söylememişsin. Zaten ağır string işlemlerinde bu fonksiyonlar çok yorar ve C uygun dil olmaktan çıkar. C++ ile mis gibi string sınıfları kullanılabilir. Fazla kasmaya gerek yok. Herşeyi yerinde kullanacaksın.
Mesela harici bir kaynaktan string bilgisi alınacak ve bir yere kopyalanacak diyelim. Bunun için güvenli olduğunu düşündüğün strcpy_s kullandın ve buffer uzunluğunu da verdin. Gelen string buffer ı aşıyorsa yarım kalır ve kopyalanmaz. Uygulama çökmez ama hatalı işleyişe sebep olur. Bunun çözümü _s takılı "güvenli!" fonksiyonlar kullanmak değil buffer uzunluğunu garanti altına almaktır.
Emin ol oradaki zaman kaybı senin o gereksiz kodları yazarken kaybettiğin zamandan çok çok daha kısadır.
Örnek? Kastettiğin virtual fonksiyonlar ise onu C ile gerçeklediğin zaman yine aynı şey olacak. Şablonlarda da hız kaybı değil bilakis hız kazancı ve üzerine tip güvenliği var. Birşey yazıyorsan onu somutlaştır ki havada kalmasın. |
Hocam yanlış anladınız sanırım... benim yapmak istediğim şu şekilde... mesela ben 5 tane ayı giriyorum klavyeden... 1 2 7 3 9 diye.... program bunu daha sonra 9 3 7 2 1 diye ekrana yazacak ..yani ekranda 1 2 7 3 9 9 3 7 2 1 yazacak.. Anlatabildim mi? Daha yeniyim o yüzden basit bir şey arıyorum.. |
@ahmet_k06 Direk kodu yazıp vermeyeceğim gidiş yollarından bahsedeceğim sadece. İlk önce 5 elemanlı bir dizi tanımla ve bu dizinin elemanları kullancıdan aldıgın degerler ile doldur. Sonra bir for döngüsü tanımlayacaksın. For döngün 0'dan başlayıp 2'e kadar gidecek. Neden 2'e kadar gittiğini sana bırakıyorum. Eğer çözemezsen haber ver anlatayım. Sonra dizinin ilk elemanı ile son elemanını swap yapacaksın yani yer değiştireceksin. Bunun için küçük bir fonksiyon yazabilirsin. Swap fonksiyonun şöyle olacak. void swap(int &a, int &b) { int tmp = b; b = a; a = tmp; } Şimdi gelelim for indexi ile 0. index ile 4. indexi nasıl yer değiştireceğine swap(dizi, dizi[4 - i]); Böyle dersen for döngüsünün içinde for'un ilk döngüsünde swap(dizi[0], dizi[4]), ikinci döngüsünde ise swap(dizi[1], dizi[3])'ü yer değiştirmiş olursun. Yapacağın işlem bu kadar. Bu tür ödevlerinizde direk kod yazmak yerine biraz düşünüp, düşündüklerinizi kağıt üzerine dökerseniz daha rahat sonuca ulaşırsınız. |
öncelikle anlatımınız için teşekkür ederim.. Lakin okulda çok fazla bir şey görmedik... yani anlattıklarınızı uygulamaya döküp hocaya veremem.. Elde olanlarla bir şeyler yapmamızı istiyor. alttaki kodu ben yazdım.. ilerisinde -görüdklerim dahilinde- birçok şey denedim olmadı.. değerleri ve kaç değer gireceğime ben karar veriyorum.. #include<stdio.h> |
@ahmet_k06 O zaman daha basit halini yapalım. for(int i = limit - 1; i >= 0; i--) { deger2[limit - i - 1] = deger; } Yukarıdaki kod ile deger2 dizisine deger dizisindeki değerleri tersten eklemiş oluruz. printf("\nGIRDIGINIZ DEGERLERIN YER DEGISTIRILMIS HALI\n"); for(i=0;i<limit;i++) printf("%d\t",deger2); printf("\n\n"); |
EYVALLAH kardeşim.. yapmak istediğim tam da böyle bir şeydi... her şey için sağol.. |
Arkadaşlar girdiğim karakter dizisinin baştan ve sondan bakarak aynı ise yazdırıan bir proğram yapmaya çalıştım.. Ama yine başarılı olamadım.. amacım şu mesela: 'adebdega' diye bir karakterimiz var.. burda baştan ve sondan baktığımızda her iki yerde de 'a' var. elde 1. sonra bakmaya devam ediyoruz. 3. sırada e var ve sondan 3. sırada yine e var.. Elde oldu 2. başka yok.... sonuç 2.... bu şekil bir program.. kendi yaptığım programda 2. for döngüsünü yanlış yaptığımı düşünüyorum yardım edin #include<stdio.h> |
@ahmet_k06 İki for'a ihtiyacın yok zaten.
|
ödevime bir yardım edebilir misiniz ? c de böyle bir görüntü oluşturmam gerekiyor açıları gircem üçgenmi değilmi söyleyecek üçgense eşkenar mı ikizkenarmı birde bunlar için hangi kodları kullanmam gerekir if lerle mi oluyor while larla mı oluyor kusra bakmayın daha 2-3 hafta olduğu öğrenmeye başlayalı < Resime gitmek için tıklayın > |
arkadaşlar probemim şu aşağıdaki programda ikinci printf satırı olayınca program 0 dan 256 ya kadar olan sayıların tamamının sonuclarını gösteriyor ama ikinci printf olunca 108 ve sonrasını gösteriyor. ikinci printf varken bütün sonucları nasıl görebilirim? #include<stdio.h> int main(void) { int d1; d1=0; for(d1=0;d1<256;d1=d1+1) { printf("AScII kodu %d olan karakter :%c \n",d1,d1); printf("------------------------------------\n"); } } |
Toplam 512 satır olduğu için ve işlemler çok hızlı yapıldığı için 108 den öncekiler yukarıda kalıyodur. |
Arkadaşlar, arka arkaya 3 defa girilen karakterlerin toplamını söyleyen bir program yapmak istedim... mesela 11123334 bu dizide 2 tane var... ama ben programımda toplamını almayı ve ekrana yazdırmayı beceremedim... ! #include<stdio.h> |
hocam peki sonuçların tamamını göreilmek için yapabileceğim bir şey varmı? |
output'u bi dosyaya alabilirsin. output.txt gibi |
Arkadaşlar klavyeden girilen bir dizide arka arkaya 3 defa tekrar eden sayıların toplamını bulan bir program yapmaya çalştım.. Ama bir sorun var ilk 3 satırda doğruysa alıyor diğerlerini almıyor ? yardım! #include<stdio.h> |
Linux'ta kullanmak için hangi C/C++ IDE/Editör'ü önerirsiniz? Kullandığım Linux dağıtımı, Arch Linux (32-bit) Code::Blocks düşünüyorum şuan ama belki Linux ortamına özgü daha iyi bi IDE vardır ondan sorayım dedim |
Hocam daha iyi mi bilemem de ben Geany kullanıyorum, alışınca fazlasıyla rahat bence. |
@GhilleintheMist Ben bir ara vim ve eklentilerini kullanmıştım. Ama şimdi QT Creator kullanıyorum. Code::Blocks'da copy-paste yapamıyorum o yüzden kullanamıyorum. KDevelop'u da denedim pek ısınamadım. |
anlamak için strtok kullanabilirsin ama projende kullanma
Bu mesaja 2 cevap geldi. Cevapları Gizle