เกิดข้อผิดพลาดเมื่อฉันป้อน 0 ก่อนตัวเลข

ฉันประสบปัญหาเมื่อฉันต้องการป้อน 0 หน้าตัวเลข แต่ทุกอย่างทำงานได้ดีเมื่อฉันป้อนเฉพาะตัวเลขเท่านั้น

#include <iostream>
#include <stdio.h>

int main()
{
    int input, output;

    printf("Enter number : ");
    scanf("%i",&input);

    output = input % 7;
    printf("%i", output);

    return 0;
}

ตัวอย่างเช่น :

  • เมื่อฉันให้อินพุต 8 ผลลัพธ์จะเป็น 1 แต่เมื่อฉันป้อน 08 ผลลัพธ์จะเป็น 0
  • เมื่อฉันให้อินพุต 100 ผลลัพธ์จะเป็น 2 แต่เมื่อฉันป้อน 0100 ผลลัพธ์จะเป็น 1

ฉันรู้ว่าอย่าพิมพ์ 0 ก่อนที่ตัวเลขจะเร็วกว่า แต่ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะพิมพ์ 0 ก่อนตัวเลขโดยไม่มีจุดบกพร่อง

ฉันใช้ Code::Blocks 16.01 (MinGW) บน Windows 10 x64


person Community    schedule 22.09.2017    source แหล่งที่มา
comment
หากคุณพิมพ์เลข 0 นำหน้า คุณจะเลือกการแสดงตัวเลขในฐานแปด เช่น 0100 ในฐานแปดเหมือนกับ 64 ในการแสดงทศนิยม 64 % 7 = 1 ดังนั้น นี่จึงไม่ใช่จุดบกพร่อง   -  person camelCase    schedule 22.09.2017
comment
@camelCase ฉันเห็น แต่ฉันสงสัยว่าฉันสามารถพิมพ์ 0 ก่อนตัวเลขโดยไม่ต้องเปลี่ยนเป็นฐานแปดได้หรือไม่ (ยังคงเป็นทศนิยม / ฐาน 10)   -  person    schedule 22.09.2017
comment
@sandyKhosasi ใช้ %d   -  person Hatted Rooster    schedule 22.09.2017
comment
scanf ชั่วร้าย   -  person Jabberwocky    schedule 22.09.2017


คำตอบ (1)


การใช้ %i ร่วมกับคำนำหน้า 0 (08, 0100 ฯลฯ..) ทำให้ scanf ตีความอินพุตเป็นเลขฐานแปดซึ่งเป็นฐาน 8 ไม่ใช่ฐาน 10 หากคุณต้องการให้ scanf ละเว้นสิ่งนี้ คุณควรใช้ %d แทน

person Hatted Rooster    schedule 22.09.2017