­čĺí C++ Scanf ─░pu├žlar─▒

C'deki kullan─▒c─▒dan veri alma metodu olan scanf hakk─▒nda bilgiler

Scanf Veri Alma Sorunu

Bir ├žok kodlamada scanf("%c",&x); ┼čeklinde veri talebinde bulunuyoruz. Bu verileri kullan─▒c─▒dan talep ederken e─čer kullan─▒c─▒ sat─▒r atlat─▒c─▒ tu┼ča bast─▒─č─▒nda ENTER ard arda olan scanf fonksiyonlar─▒nda girdi almada problemler olu┼čuyor.

├ľrne─čin yukar─▒daki koddaki gibi bir scanf kullan─▒m─▒nda, kullan─▒c─▒ s─▒ras─▒yla 'a', 'b', 'c' verilerini girmi┼č olsun. x, y ,z 'yi ayr─▒ ayr─▒ ekrana bast─▒─č─▒m─▒zda ├ž─▒kt─▒ ┼ču ┼čekilde olacakt─▒r:

Neden Veri Almada Sorun Var

Programa 'a' yaz─▒p ENTER'a bast─▒─č─▒m─▒z zaman:

  • ENTER'─▒ da veri olarak yani '\n' olarak alg─▒l─▒yor.

  • Elimizde 'a' ve '\n' karakterleri oluyor

  • ─░lk char de─či┼čkenine 'a' harfi, ikinci char de─či┼čkenine '\n' harfi atan─▒yor

  • ─░ki karakter girdi─čimizi zannederken program ├╝├ž karakter ald─▒─č─▒ i├žin ekrana yazd─▒rma i┼člemlerine ge├žiyor

  • Fark edildi─či ├╝zere ─░kinci eleman: dan sonra bir sat─▒r atlat─▒lm─▒┼č. ─░┼čte bu '\n' olarak ifade etti─čimiz ENTER'a bas─▒nca y de─či┼čkenine atanan karakter.

Nas─▒l Engellenir

├ç├Âz├╝m olduk├ža basit. scanf'lerin i├žine "%c" yerine " %c" yazmak. Bu sayede fonksiyon SPACE, ENTER gibi ├Âzel karakterleri girdi olarak alg─▒lam─▒yor.

Ya Bu %20s'in Olay─▒ Nedir

Yazd─▒r─▒lacak olan string de─čeri i├žin 20 karakterlik bir alan ay─▒r─▒p, ayr─▒lan alan─▒n sa─č─▒na dayal─▒ yazd─▒rmak i├žin kullan─▒lmaktad─▒r.

G├Ârsel anlamda yaz─▒lar─▒ birbirine hizalamak i├žin tercih edilmekte.

Peki ya -%20s

├ľnceki kullan─▒m ile ayn─▒ ┼čekilde 20 karakterlik bir alan ay─▒rmakta lakin bu sefer ├ž─▒kt─▒, ayr─▒lan alan─▒n soluna dayal─▒ ┼čekilde yaz─▒lmakta.