সমস্যা
সি ভাষায় scanf() ফাংশন ব্যবহার করে স্ট্রিং ও নিউমেরিক ডেটা পড়ার সময় সাধারণ ত্রুটি।
সমাধান
scanf() ফাংশন সি ভাষায় stdin থেকে ফরম্যাটেড ইনপুট পড়ার জন্য ব্যবহৃত হয়। এটি লেখা ক্যারেক্টার들의 পুরো সংখ্যা রিটার্ন করে, অন্যথায় নেগেটিভ ভ্যালু রিটার্ন করে।
সাধারণত scanf() ফাংশন ব্যবহার করে ব্যবহারকারীর কাছ থেকে ইন্টিজারের পর স্ট্রিং ভ্যালু পড়ার সময় ঘন ঘন ত্রুটি হয়।
উদাহরণ
নিচে একটি সি প্রোগ্রাম দেওয়া হলো যা একজন ছাত্রের রোল নম্বর (ইন্টিজার ভ্যালু) এবং নাম পড়ে −
#include <stdio.h> struct student { char name[10]; int roll; } s; int main(){ printf("Enter information of students:\n"); printf("\nEnter roll number: "); scanf("%d", &s.roll); printf("\nEnter name: "); gets(s.name); printf("\nDisplaying Information of students:\n"); printf("\nRoll number: %d\t", s.roll); printf("\nname:%s\t", s.name); return 0; }আউটপুট
উপরোক্ত উদাহরণে, রোল নম্বর কম্পাইলার পড়ল, তারপর কম্পাইলার নাম পড়তে পারল না এবং পরবর্তী স্টেটমেন্টে চলে গেল printf("Roll Number is: %d\t, s.roll);
and the output is "Roll number: 3 name: "
এটি সি ভাষায় scanf() ফাংশন ব্যবহার করে স্ট্রিং ও নিউমেরিক ডেটা পড়ার সময় ঘটে সাধারণ ত্রুটি।
Enter information of students: Enter roll number: 3 Enter name: //error Displaying Information of students: Roll number: 3 name: //error