নিম্নোক্ত প্রোগ্রামটি হতে আমি এরকম ফলাফল চাচ্ছি যেন 10 টা সারিই পূর্ণ হওয়ার আগে যেকোনো সময় ইউজার ইন্টার প্রেস করলে যে সারিগুলো ইনপুট দেওয়া হয়েছে সেগুলো দেখায়। কিন্তুু শুধু একটি সারি দেখাচ্ছে। কেউ যদি সমাধানটা দিতেন তাহলে উপকৃত হতাম।

include<stdio.h>

include<string.h>

int main() { char ara[10][21]; int row,len;

for (row = 0; row < 10; row++) {

        scanf("%s", ara[row]);

        len = strlen(ara[row]);

        if (ara[row][len] == '\0') break;
    }
    for (int i = 0; i <= row; i++) {

        printf("%s\n", ara[i]);
    }

}

asked 23 Aug '16, 06:59

Sohanur%20Rahman's gravatar image

Sohanur Rahman
192


এখানে সমস্যা হল আপনি স্ট্রিং ইনপুট নিচ্ছেন আর চেক করছেন বর্তমানে যে স্ট্রিং ইনপুট নিচ্ছেন তার শেষে নাল ক্যারেকটার ('\0') আছে কিনা। আপনি scanf() দিয়েই কোনো স্ট্রিং ইনপুট নিন অথবা gets() দিয়েই নিন - স্ট্রিং -এর শেষে নাল ক্যারেকটার থাকবেই। কাজেই আপনি যখন প্রথম ইনপুট দিলেন তখনি if (ara[row][len] == '\0') কন্ডিশনটি সত্য হয়ে যায় এবং লুপ break করে আর শুধু প্রথম ইনপুটটিই আউটপুট দেয়।

আপনি আপনার কাজটি এভাবে করতে পারেনঃ

#include <stdio.h>
int main()
{
    int i, j;
    char s[10][15], c;
    for(i=0; i<10; i++) {
        scanf("%s", s[i]);
        c = getchar();
        if(c=='\n') {
            break;
        }
    }
    if(i==10)
        i -= 1;
    for(j=0; j<=i; j++)
        puts(s[j]);
    return 0;
}

এখানে প্রতিবার স্ট্রিং -এর সব ক্যারেকটার নেওয়া শেষে আমরা একটি ক্যারেকটার আশা করছি (c = getchar() -এর মাধ্যমে) c -র মান যদি হয় ' ' (স্পেস ক্যারেকটার) তবে লুপ চলবে, আর যদি নিউ লাইন ক্যারেকটার ('\n') হয় তবে লুপ break করবে।

permanent link

answered 23 Aug '16, 07:42

Najat's gravatar image

Najat
5398

edited 23 Aug '16, 07:43

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:

×401
×56
×18
×3
×3

question asked: 23 Aug '16, 06:59

question was seen: 600 times

last updated: 23 Aug '16, 07:43