เราใช้คุ๊กกี้บนเว็บไซต์ของเรา กรุณาอ่านและยอมรับ นโยบายความเป็นส่วนตัว เพื่อใช้บริการเว็บไซต์ ไม่ยอมรับ
de algorismokratui++
Input มีค่าที่เราไม่ต้องการเหรอ scanf ช่วยได้นะ
  • นี่เป็นความลับเล็ก ๆ ของ scanf ที่คนไม่ค่อยรู้

    เวลาเราเรียนเขียนโปรแกรมเนี่ย ใคร ๆ ก็รู้ว่า scanf มีไว้รับค่าใช่ไหมล่ะครับ เช่น ถ้าเราต้องการรับเลขตัวเดียว
    2
    เราก็เขียนโค้ดง่าย ๆ ได้ดังนี้
    int x;
    scanf("%d", &x);
    แต่ถ้าเรามีข้อมูลที่เราไม่ต้องการอยู่ด้วยล่ะ จะทำอย่างไร ลองดูข้อมูลต่อไปนี้
    22/7/2015
    ถ้าเราต้องการแค่เดือน (เลขตัวกลาง) เราจะทำอย่างไรดี ในที่นี้แหละคือสิ่งที่หลายคนไม่รู้เกี่ยวกับ scanf ว่าเราสามารถกำหนดได้ว่าจะรับ หรือไม่รับค่าไหน สังเกตว่ารูปแบบของวันที่จะเป็น
    เลข/เลข/เลข
    เราไม่สนใจ / ในที่นี้ เราจึงเขียนเป็น
    int a, b, x;
    scanf("%d/%d/%d", &a, &x, &b);
    แบบนี้ พอคอมอ่านเจอ / เมื่อไหร่ ก็จะกระโดดข้ามไปอ่านตัวต่อไปเลย

    แล้วก็ไม่ต้องสนใจตัวแปร a, b ไปเลยก็ได้ แต่เอ~ แบบนี้ก็มีตัวแปรที่ไม่ได้ใช้น่ะสิ นี่แหละที่ sub-specifier * เข้ามาช่วย โดยที่ตัวไหนที่เราไม่สนใจ เราก็ใส่ * ไว้ข้างหน้าตัว d ซะเลย โค้ดก็จะกลายเป็น 
    int x;
    scanf("%*d/%d/%*d", &x);
    แบบนี้เราก็จะสกัดข้อมูลที่เราต้องการได้ตั้งแต่ตอนรับค่า  ไอ้การที่เรารู้ทริกซ์เล็ก ๆ นี้ช่วยให้เราประหยัดเวลาทำงานไปได้มาก อันที่จริงยังมีอย่างอื่นอีกมากที่ปกติเราไม่เคยถูกสอน ลองศึกษาดูได้ที่ http://www.cplusplus.com/reference/cstdio/scanf/ 

    ภาษา C นี่มันลึกล้ำนะ
Views

เข้าสู่ระบบเพื่อแสดงความคิดเห็น

Log in