আমি চাচ্ছি আমার কোড ১০ বর্ন বা ক্যারেকটার ইনপুট নিবে এবং ধারাবাহিক ভাবে আউটপুট দিবে যেমন b c a ইনপুট দিলে a b c আউটপুট দিবে। কিন্তু এই প্রোগ্রামটা ৫ ক্যারেকটার ইনপুট নেওয়ার পর ধারবাহিক প্রিন্ট করে অফ হয়ে যাচ্ছে

#include <stdio.h>
int main()
{
    int j;
    char ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10 ;

     ch1 = getchar();
     ch2 = getchar();
     ch3 = getchar();
     ch4 = getchar();
     ch5 = getchar();
     ch6 = getchar();
     ch7 = getchar();
     ch8 = getchar();
     ch9 = getchar();
     ch10 = getchar();

for(j = 65;j <= 122 ; j++){
        if(ch1 == j) printf("%c ", ch1);
        else if(ch2 == j) printf("%c ", ch2);
        else if(ch3 == j) printf("%c ", ch3);
        else if(ch4 == j) printf("%c ", ch4);
        else if(ch5 == j) printf("%c ", ch5);
        else if(ch6 == j) printf("%c ", ch6);
        else if(ch7 == j) printf("%c ", ch7);
        else if(ch8 == j) printf("%c ", ch8);
        else if(ch9 == j) printf("%c ", ch9);
        else if(ch10 == j) printf("%c ",ch10);
   }
return 0;
}

asked 20 Jul '16, 19:29

manik%20mal's gravatar image

manik mal
133

edited 20 Jul '16, 19:30


সমস্যা হল আপনি যখন একটি ক্যারেকটার ইনপুট দিয়ে enter চাপছেন, তখন ঐ enter এর মাধ্যমে একটি '\n' ক্যারেকটার (নিউ লাইন ক্যারেকটার) পরের getchar() - এ ইনপুট হিসেবে ঢুকে যাচ্ছে। ১০ টি ইনপুট দিয়ে ১০ বার enter চাপা হবে ফলে ch1 - এ একটি ক্যারেকটার, ch2 - তে '\n' ক্যারেকটার, ch3 - তে একটি ক্যারেকটার, ch4 - এ '\n' ক্যারেকটার ... ... এভাবে চলবে এবং শেষ enter টি চাপার মাধ্যমে ch10 - এ একটি '\n' ক্যারেকটার ঢুকবে এবং একই সাথে ইনপুটের শেষ বিধায় আউটপুটও দেখাবে। এখন '\n' - এর ASCII মান হল 10, যা 65 থেকে ছোট, কাজেই কোনো '\n' প্রিন্ট হবে না বরং যে ৫ টি বর্ণ ইনপুট নেওয়া হয়েছে সেগুলো প্রিন্ট হবে।

এই সমস্যা সমাধানে প্রতি ২ টি getchar()-এর মাঝে আরেকটি getchar() দিন, যার মাধ্যমে প্রত্যেক ভ্যারিয়েবলে আপনার কাঙ্ক্ষিত ইনপুট ঢুকবে এবং '\n' জনিত কোনো সমস্যা হবে না। এই getchar() টি কোথাও স্টোর করার দরকার নেই শুধু লিখে দিলেই '\n' - কে সে নিয়ে নিবে। যেমন:

ch1 = getchar();

getchar();

ch2 = getchar();

... ...

এভাবে শেষ পর্যন্ত।

স্ট্রিং - নিয়ে কাজ করার সময়ও এরকম কিছু বিষয় আছে, তখন এটি দেখে নিতে পারেন: http://programabad.com/questions/4857/scanf-gets

permanent link

answered 20 Jul '16, 20:13

Najat's gravatar image

Najat
4897

ধন্যবাদ কোড টা সম্পুর্নভাবে কাজ করেছে।

(22 Jul '16, 05:17) manik mal
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Question tags:

×328
×70

question asked: 20 Jul '16, 19:29

question was seen: 342 times

last updated: 22 Jul '16, 05:17