Yapmak istediğim şey ad ve soyadı sırayla kullanıcıdan alıp yazdırmak. Birkaç deneme yaptım ama printf ile her şey aynı anda yazılıyor. If, else vs. ile yapmak aklıma geldi ama ilk koşul hep true olduğu için bununla da yapamadım. Aklıma şu an bir şey gelmedi. Hazıra konmak gibi bir amacım yok. oldukça acemi bir C programlama öğrencisiyim diyebilirim. Direkt cevap yerine herkes için daha öğretici, sorgulayarak şunu şunu yapabilirsin vs. gibi tüyolar verilmesi daha iyi olur. Bunlarla bir neticeye ulaşamazsam da sizlerden daha somut yardım istemek zorunda kalacağım. Şimdiden teşekkürler.
Döngü olmadığı için sayacın değeri 0'dan başlayıp sadece ilk if'in içerisine giriyor. Main altındaki tüm kodun bir while veya for döngüsü içerisine alıp sonlandırma şartının ise sayacın 2 olmasına bağlayabilirsiniz.
Döngüsüz olması içinse if'leri kaldırabilirsiniz. O zaman sayaca da gerek kalmıyor haliyle.
C'nin belki de yumuşak karnı olan String'ler her zaman sıkıntı yaratmıştır. scanf stringler için görece yetersiz bir fonksiyon. Güvenlik sorunları ile meşhur olsa da gets() kullanabilirsiniz. Kendisinin s_gets(), gets_s() gibi günvenli versiyonları da mevcut ancak Standart C Lib içerisinde var mı emin değilim.
printf("Adiniz ve soyadiniz kaydedildi.\nAdiniz Soyadiniz: ");
printf("%s %s",ad,soyad);
}
return 0;
}[/CODE]
Şimdi öncelikle else ifleri' direkt olarak if'e çevirdim çünkü else kelime anlamı gibi "değilse" anlamına geliyor ve "değilse eğer" gibi bir anlam katıyor, baştaki if bloğu geçerli olduğu için yani if true sorgu ürettiği için diğer sorguları yapmadan geçiyor yani o satırları atlıyor. Direkt olarak if'e çevirmek gerekli. (İlle karar yapısı yapmak istiyorsan yoksa bunu kullanmadan da direkt olarak yapabiliriz.)
İkinci olarak senin değişkenlere atfetmiş olduğun yapı olan "%[^\n] " yapısı;
C'deki %[^\n] ifadesi genellikle tüm satırı okumak için kullanılır.
Diyelim ki scanf(“%[^\n]”, x);
Böylece yukarıdaki talimat, dosyanın (EOF) veya \n(sonraki satır) sonuna ulaşana kadar tüm karakterleri okuyacak ve x'e koyacaktır ama buna gerek var mı sence? Bence hayır onları da string ifadenin türünü belirten "s" ile değiştirdim.
En alta geldiğimizde sen printf ile ad soyadı yazdırmak isterken "%c" kullanmak istemişsin, c harfi char türünü sembolize eder char ise karakterleri yani 'A' bir chardir "A" ifadesi ise bir string değerdir, char tek bir değer alırken string değeri birden fazla karakter alabilir "aa" gibi bu yüzden %c yerine %s kullanmamız gerekli aksi halde %c ekrana veri yazdırmayacaktır.
Tüm bunlardan bağımsız aslında şu şekilde çalıştırabilirsin clean code mantığı burda devreye giriyor.