x n বার স্ক্যান করছে না কেন? স্পেসসহ স্ট্রিং দরকার।

#include<stdio.h>
int main()
{
    char  x[100];

   int n,i;
   scanf("%d",&n);

   for(i=1;i<=n;i++)
   {
        gets(x);
        printf("Something\n");
   }
}

asked 28 Nov '17, 15:55

Asif001's gravatar image

Asif001
715

edited 28 Nov '17, 17:21

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
23618


n ইনপুট নেয়ার সময় যে এন্টার চাপা হয় সেটা gets() এ একবার ঢুকে পড়ে। ফলে Something প্রিন্ট করে। পরে আরো n-1 বার ইনপুট দিলে Something প্রিন্ট করবে। অর্থাৎ x n বারই স্ক্যান হয়। প্রথম ইনপুটের ঝামেলা এড়াতে gets() এর বদলে

scanf(" %[^\n]s",x);
ব্যবহার করতে হবে (স্পেসসহ ইনপুট নিতে)। অথবা n ইনপুট নেয়ার পর একটা অতিরিক্ত getchar() বসালেই হবে।

permanent link

answered 28 Nov '17, 17:19

Mosharraf%20Hosain's gravatar image

Mosharraf Hosain ♦
23618

edited 28 Nov '17, 17:36

স্ক্যান করার পরে getchar() ব্যবহার করেন ।

 scanf("%d",&n);
 getchar();
permanent link

answered 28 Nov '17, 17:26

menon's gravatar image

menon
4.3k324

Enter প্রেস করলে সেটা gets() এ ইনপুট হিসেবে নিয়ে নিচ্ছে। একটা ভাল সমাধান হতে পারে fflush(stdin) ব্যবহার করা। এটা কীবোর্ড এর বাফার মুছে দেয়। তাই পরের লাইনে যখন gets() কমান্ড পায় তখন নতুন করে ইনপুট নিতে পারে।

 scanf("%d",&n);
 fflush(stdin);
 getchar();
permanent link

answered 04 Apr, 08:15

SJabin's gravatar image

SJabin
212

edited 04 Apr, 08:54

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:

×53
×2
×1
×1

question asked: 28 Nov '17, 15:55

question was seen: 214 times

last updated: 04 Apr, 08:54