সমস্যা
সি প্রোগ্রামিং-এ কম্পাইলার ইন্টিজারের পর স্ট্রিং পড়ে না? এই সমস্যাটি কীভাবে সমাধান করবেন?
সমাধান
যখন আপনি একটি ইন্টিজার নম্বর ইনপুট দিয়ে এন্টার চাপেন পরবর্তী ভ্যালু পড়ার জন্য, কম্পাইলার স্ট্রিং-এর প্রথম ক্যারেক্টারে নাল সংরক্ষণ করে এবং স্ট্রিং ইনপুট টার্মিনেট হয়। কারণ scanf যখনই নাল ক্যারেক্টার পায়, টার্মিনেট হয়ে যায়।
কীভাবে সমাধান করবেন?
যখন আমরা ইন্ট বা ফ্লোটের পর স্ট্রিং বা ক্যারেক্টার পড়ার চেষ্টা করি, তখন ইনপুট বাফারে থাকা একটি টেম্পোরারি ক্যারেক্টার পড়তে হয়।
নিচে ত্রুটিমুক্ত প্রোগ্রামটি দেওয়া হলো −
উদাহরণ
#include <stdio.h> struct student{ char name[10]; int roll; char temp; } s; int main(){ printf("Enter information of students:\n"); printf("\nEnter roll number: "); scanf("%d", &s.roll); scanf("%c",&s.temp); //read temporary character 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; }আউটপুট
Enter information of students: Enter roll number: 3 Enter name: tutorialspoint Displaying Information of students: Roll number: 29806 name:tutorialspoint