কেন প্রথম অক্ষর পরে চরিত্র গণনা?

Stdin থেকে অক্ষর ইনপুট গণনা করার জন্য আমি C এ একটি প্রোগ্রাম লিখেছি। আমি একটি লুপ ব্যবহার করতে চেয়েছিলেন একাধিক এন্ট্রি (নোট: আমি প্রোগ্রামিং নতুন।)

main()
{
    long nc;
    int c;
    int kc=1;
    for (kc=1;kc<=5;kc=kc+1)
    {
        nc=0;
        c= getchar();
        while(c != '0')
        {

        ++nc;
        c=getchar();
        }

        printf("%1d\n",nc);

    }
    return 0;
}

তাই মূলত হিসাবে আপনি অনুমান করবে, লুপ 5 এন্ট্রি গ্রহণ।

সমস্যা: যখন আমি Sky0 লিখি তখন প্রথম ফলাফলটি ঠিক আছে, 3। কিন্তু তারপর থেকে, এক গণনা যোগ করা হয়। 5 , sit0 এর একটি সংখ্যার 4 ইত্যাদির ফলাফল ফলাফল dame0 এ প্রবেশ করছে।

বিভিন্ন পর্যায়ে প্রিনফ ব্যবহার করে সমস্যাটি ডিবাগ করার চেষ্টা করার সময়, আমি বুঝতে পেরেছি যে প্রথম ফলাফলের পরে কোডটি ইনপুট শেষ হয়ে যায়, 0 , কিন্তু লুপের জন্য প্রবেশ করে পরের এন্ট্রির জন্য অপেক্ষা করে এনসি </কোড> হিসাবে 1 । যে আউটপুট আউটপুট মধ্যে ত্রুটি বাড়ে।

দয়া করে বলুন আমি কোথায় যাচ্ছি? 0 সেন্সিং পরেও কেন লুপটি প্রবেশ করছে?

ব্যাপকভাবে আপনার সাহায্য এবং সময় প্রশংসা :)

0
যোগ সম্পাদিত
মতামত: 1
Hmjd: ধন্যবাদ মানুষ! ... হ্যাঁ আমি এটি সংশোধন, একটি শূন্য সঙ্গে একটি non-professional way terminatin কি ছিল neway ... ure সময় প্রশংসা :)
যোগ লেখক Aki, উৎস
prasad g: এটা পরিষ্কার সাথি নয় ...
যোগ লেখক Aki, উৎস
Seki: আশা করি যে prasad জি জন্য ছিল :)
যোগ লেখক Aki, উৎস
এনসি </কোড> 0 লুপের জন্য এর প্রতিটি পুনরাবৃত্তিতে সেট করা হয়। অক্ষরটি '0' পাওয়া গেলে যখন লুপ বন্ধ হয়ে যাবে। আমি কি এটি বলেছি যে "হাই" বলেছে এবং সেটি ঠিক আছে, আমি যা করেছি তার জন্য ideone.com/gw1on দেখুন। এটি পরবর্তী ইনপুট অংশ গঠন নতুন অক্ষর দেখায়।
যোগ লেখক hmjd, উৎস
এটা সম্ভব সি == '0'? যখন c == '0' তখন লুপ বন্ধ হয়ে যাবে। আমি গ = 1 প্রতি সময় আছে।
যোগ লেখক Prasad G, উৎস
তুমি কি কথা বলছ? আপনার প্রশ্ন লেখা এবং কোড indenting সময় কিছু প্রচেষ্টা করুন দয়া করে। অন্যথায় লোকজন তা পড়তে সময় নষ্ট করবে না।
যোগ লেখক Seki, উৎস

1 উত্তর

সমস্যা হল যে আপনি যখন এন্টার চাপবেন, তখন এটি একটি অক্ষর হবে (মান 0x1a), এবং এটি getchar দ্বারা ফেরত পাঠানো হবে যখন লুপের বাইরে।

আপনি কিছু করতে পারে:

while (getchar() != '\n') nc++;

এইভাবে আপনি স্ট্রিংের শেষে চিহ্নিত করার জন্য 0 ব্যবহার করতেও চাচ্ছেন না।

0
যোগ
হ্যাঁ আমি এটা সাথি সংশোধন:) ... thnks :)
যোগ লেখক Aki, উৎস
ওহক ... এখানে নতুন ...) ... করবে ...
যোগ লেখক Aki, উৎস