আমি নিম্নলিখিত প্রোগ্রাম আছে:
int main(int argc, char *argv[])
{
char ch1, ch2;
printf("Input the first character:"); // Line 1
scanf("%c", &ch1);
printf("Input the second character:"); // Line 2
ch2 = getchar();
printf("ch1=%c, ASCII code = %d\n", ch1, ch1);
printf("ch2=%c, ASCII code = %d\n", ch2, ch2);
system("PAUSE");
return 0;
}
উপরের কোডটির লেখক যেমন ব্যাখ্যা করেছেন: প্রোগ্রামটি সঠিকভাবে কাজ করবে না কারণ লাইন 1 এ, যখন ব্যবহারকারী এন্টার টিপায়, এটি ইনপুট বাফার 2 অক্ষরে ছেড়ে যাবে: Enter key (ASCII code 13)এবং \n (ASCII code 10)। অতএব, লাইন 2 এ এটি পড়বে \nএবং ব্যবহারকারীর কোনও চরিত্র প্রবেশের অপেক্ষায় থাকবে না।
ঠিক আছে, আমি এটি পেয়েছি তবে আমার প্রথম প্রশ্নটি হল: দ্বিতীয় getchar()( ch2 = getchar();)টি চরিত্রের Enter key (13)পরিবর্তে কেন পড়ছে না \n?
এর পরে, লেখক এই জাতীয় প্রব্রিমগুলি সমাধান করার জন্য 2 টি উপায় প্রস্তাব করেছিলেন:
ব্যবহার
fflush()এই মত একটি ফাংশন লিখুন:
void clear (void) { while ( getchar() != '\n' ); }
এই কোডটি আসলে কাজ করেছিল। তবে আমি কীভাবে এটি কাজ করে তা নিজেকে ব্যাখ্যা করতে পারি না? কারণ বিবৃতিতে, আমরা ব্যবহার করি getchar() != '\n', তার মানে কি কোনও একক চরিত্র বাদে পড়া '\n'? যদি তাই হয় তবে ইনপুট বাফারে এখনও '\n'চরিত্রটি রয়ে গেছে ?