C programming में int variable में input के बाद char scanf input क्यों नहीं लेता?

बहुत से beginner programmers को c programming में ये problem कभी न कभी जरूर आती है की char scanf function int scanf के बाद input नहीं ले रहा होता है. आइये इस problem को solve करते हैं.

अगर आपने कोई ऐसा program बनाया जिसमें आपने सिर्फ char variable में input लिया है या int या किसी और data type से input लेने से पहले सबसे ऊपर char variable में input लिया है तो आपको कोई problem face नहीं होगी.

लेकिन अगर आपने नीचे दिए गये example की तरह char variable में input लेने से पहले किसी और data type जैसे की int, float और char में input लिया है तो आप char variable में input नहीं ले पाएंगे.

char ch;
int num;

scanf("%d",&num);
scanf("%c",&ch);

ऊपर दिए गये program में int variable num में value input करके जैसे ही keyboard में enter key press करके आपका program खत्म हो जायेगा यानी वो char variable में input लेने वाले scanf को skip कर देगा.

ये problem आती है enter key की वजह से जो आपने char input लेने वाले scanf से पहले scanf पर data input करने पर press किया था.

Actual में होता ये की आप जब enter key press करते हैं तब int input लेने वाला scanf उसे accept नहीं करता है यानी वो enter input buffer में रहता है और फिर next char input वाला scanf उस enter key को accept कर लेता है.

अब enter key (symbol) show तो होता नहीं है जिसकी वजह से हमें ऐसा लगता है की char scanf skip हो गया है.

इस problem से बचने का बहुत ही आसान तरीका है आपको बस char variable में input लेते वक्त उसके scanf में format specifier से पहले एक space देना है.

//Change 
scanf("%c", &var); 
//to 
scanf(" %c",&var);

अगर आप ऊपर बताई गयी इस छोटी सी trick को अपने C program में use करेंगे तो आपको कभी भी int variable में input लेने के बाद char variable में input लेने में कोई problem नहीं आएगी.