সমস্যাটি বলে যে scanf এর পরে fgets()/gets()/scanf() থাকলে কাজ বা আউটপুট কি হবে।
fgets()/gets() এর পরে scanf()
উদাহরণ
#include<stdio.h> int main() { int x; char str[100]; scanf("%d", &x); fgets(str, 100, stdin); printf("x = %d, str = %s", x, str); return 0; }
আউটপুট
Input: 30 String Output: x = 30, str =
ব্যাখ্যা
fgets() এবং gets() ব্যবহার করা হয় রান টাইমে ব্যবহারকারীর কাছ থেকে স্ট্রিং ইনপুট নিতে। আমি উপরের কোড করি যখন আমরা পূর্ণসংখ্যার মান লিখি তখন এটি স্ট্রিং মান নেবে না কারণ আমরা যখন পূর্ণসংখ্যা মানের পরে নতুন লাইন দিই, তখন fgets() বা gets() কাঙ্খিত ইনপুটের পরিবর্তে একটি ইনপুট নেবে নিউলাইন যা "স্ট্রিং" .
scanf() এর পরে একটি scanf()
বারবার scanf() এর পরে scanf() পেতে আমরা একটি লুপ ব্যবহার করতে পারি।
উদাহরণ
#include<stdio.h> int main() { int a; printf("enter q to quit"); do { printf("\nenter a character and q to exit"); scanf("%c", &a); printf("%c\n", a); }while (a != ‘q’); return 0; }
আউটপুট
Input: abq Output: enter q to quit enter a character and q to exita a enter a character and q to exit enter a character and q to exitb b enter a character and q to exit enter a character and q to exitq
ব্যাখ্যা
এখানে আমরা একটি অতিরিক্ত নতুন লাইনের পরে 'একটি অক্ষর প্রবেশ করান এবং প্রস্থান করার জন্য q' একটি অতিরিক্ত লাইন দেখতে পাচ্ছি, কারণ প্রতিবার scanf() একটি বাফারে একটি নতুন লাইন অক্ষর ছেড়ে যায় যা পরবর্তী scanf() দ্বারা এটি অনুসরণ করে। . scanf() এর মত scanf(“%c\n”) টাইপ স্পেসিফায়ার দিয়ে ‘\n’ ব্যবহার করে এই সমস্যার সমাধান করতে; বা অন্য বিকল্প হল আমরা অতিরিক্ত নতুন লাইন পড়তে অতিরিক্ত getchar() বা scanf() ব্যবহার করতে পারি।