scanf() ফাংশন কিভাবে কাজ করে: সি প্রোগ্রাম

আপনি যদি চান প্রোগ্রাম রান করার পর একটি মান ইনপুট দিবেন এবং সেই মানটি একটি ভেরিয়েবলে রাখবেন তাহলে scanf() ফাংশন ব্যবহার করতে হবে। মনে করুন আপনি প্রোগ্রাম রান করার পর কীবোর্ড থেকে 32 ইনপুট দিবেন এবং সেটি a নামের একটি ভেরিয়েবলে রাখবেন। তাহলে scanf() ফাংশনটি হবে নিচের মতঃ

int a;
scanf("%d",&a);

এখানে, scanf() ফাংশনের ভিতরে ডাবল ইনভার্টেট কমার ভিতরে %d দিয়ে বুঝানো হচ্ছে একটি পূর্ণসংখ্যা ইনপুট নেওয়া হচ্ছে এবং কমা দিয়ে &a লিখার অর্থ হল ইনপুট দেওয়া সংখ্যাটি a ভেরিয়েবলে রাখা হবে। এখন আপিনি যদি একটি ভগ্নাংশ রাখতে চান তাহলে %d এর পরিবর্তে %f লিখতে হবে। সম্পূর্ন কোডটি হবেঃ

float a;
scanf("%f",&a);

আবার মনে করুন, দুইটি ভেরিয়েবলে দুইটি পূর্ণসংখ্যা রাখবেন, তাহলে নিচের মত লিখতে হবেঃ

int a,b;
scanf("%d%d",&a,&b);

আপনি যদি প্রথমে 12 এবং পরে 15 ইনপুট দেন তাহলে 12 রাখবে a এর মাঝে এবং 15 রাখবে b এর মাঝে। অর্থাৎ প্রথম %d টা হল &a এর জন্য এবং দ্বিতীয় %d টা &b এর জন্য। এখন নিচের কোডটির কোথায় সমস্যা তা বের করুনঃ

int a;
float b;
scanf("%d%f",&b,&a);

আশাকরি আপনি ভুলটি ধরতে পেরেছেন। তারপরেও আমি বলে দিচ্ছি, আমার সাথে মিলিয়ে নিন-
%d%f মানে হল প্রথম ইনপুটটি একটি পূর্নসংখ্যা এবং দ্বিতীয় ইনপুটটি একটি ভগ্নাংশ। আবার &b,&a মানে হল প্রথম ইনপুটটি b তে এবং দ্বিতীয় ইনপুটটি a তে রাখতে হবে। অর্থাৎ পূর্নসংখ্যা রাখতে চাচ্ছেন b তে কিন্তু b কে ডিক্লেয়ার করেছেন float হিসাবে। আবার ভগ্নাগ্নশ রাখতে চাচ্ছেন a তে কিন্তু a কে ডিক্লেয়ার করেছেন int হিসাবে। উপরের কোডটি নিচের মত করে যেকোন একভাবে লিখলে সঠিক হবেঃ

float a;
int b;
scanf("%d%f",&b,&a);

অথবা

int a;
float b;
scanf("%f%d",&b,&a);

অথবা

int a;
float b;
scanf("%d%f",&a,&b);

এখন a এবং b এর মানগুলো দেখতে নিচের কোডটি রান করুনঃ

#include<stdio.h>
int main()
{
int a;
float b;
printf("Enter two values: ");
scanf("%d%f",&a,&b);
printf("a = %d and b = %f",a,b);
return 0;

}

output


Enter two values: 56 61.65
a = 56 and b = 61.65

বিঃদ্রঃ scanf() ফাংশনের মাধ্যমে ভেরিয়েবলে মান রাখতে ভেরিয়েবলের আগে &(এম্পারসেন্ট) ব্যবহৃত হয় কিন্তু printf() ফাংশনের মাধ্যমে ভেরিয়েবলের মান দেখাতে ভেরিয়েবলের আগে &(এম্পারসেন্ট) ব্যবহৃত হয় না।

আমাদের সম্পর্কে আপডেট জানতে চাইলে এবং এই রকম তথ্য পেতে ফেইস বুক পেইজ এ লাইক দিয়ে একটিভ থাকতে পারেন।

Previous
Next Post »

পোস্ট সম্পর্কিত সমস্যার জন্য মন্তব্য দিন।ডাউনলোড লিঙ্ক এ সমস্যা জন্য ইনবক্স করুন Aimzworld007
ConversionConversion EmoticonEmoticon

Thanks for your comment