প্রস্থান () ফাংশনের ব্যবহার


101

আমি কীভাবে এবং কখন exit()আমার বইয়ের প্রোগ্রামটির মতো ফাংশনটি ব্যবহার করতে পারি তা জানতে চাই:

#include<stdio.h>

void main()
{
    int goals;
    printf("enter number of goals scored");
    scanf("%d",&goals);

    if(goals<=5)
        goto sos;
    else
    {
        printf("hehe");
        exit( );
    }
    sos:
    printf("to err is human");
}

আমি যখন এটি চালাব, এটি ত্রুটি দেখায়: অপরিজ্ঞাত ফাংশন প্রস্থান () এ কল করুন

এছাড়াও, আমি জানতে চাই যে আমি প্রোগ্রামটি যে উইন্ডোটিতে চালিত উইন্ডোটি বন্ধ করতে একটি বিকল্প তৈরি করতে পারি? উদাহরণস্বরূপ, আমি একটি মেনু চালিত প্রোগ্রাম তৈরি করেছি যার বেশ কয়েকটি বিকল্প ছিল এবং তার মধ্যে একটি ছিল "মেনু থেকে প্রস্থান" । আমি কীভাবে এই প্রস্থানটিকে প্রোগ্রামটি (যেমন উইন্ডোটি বন্ধ করতে পারি) করতে পারি?


8
আপনি যদি উত্তর চান তবে আপনার কোড এবং প্রশ্নের ফর্ম্যাট করুন যাতে লোকেরা এটি পড়তে পারে। এবং চুপ করো না!

4
কোড ফর্ম্যাটটি একটি জিনিস, তবে এটি খারাপভাবে লেখা হয়েছে। আপনি উত্তর চান না যে এই মত চেহারা, আপনি কি?
কোবি

54
ওরে! গেস্টস এবং প্রস্থান? আমার চোখ! তারা জ্বলে!
কাইল

8
আমি কোনও সি-বিশেষজ্ঞ নই বা আমি কোনও অসুবিধা ছাড়াই এটি লিখতে পারি না যাতে আমি এই সম্পর্কে ভুল হতে পারি ... তবে আমি কি আপনাকে পরামর্শ দিতে পারি যে আপনি সেই বইটি ফেলে দিন? সি তে গোটো ব্যবহার করা এমন ... মত ... আমি জানি না। এবং যদি আপনি এখন আমাকে ক্ষমা করবেন, তারা কীভাবে দরজা খুলতে হবে তা বুঝতে পেরেছিলেন * hides.in.the.kocolate * ...
ববি

8
ঠিক আছে, গেটো এখনও সি তে বৈধ সিনট্যাক্স এটি স্টাইলিস্টিকভাবে অস্বীকৃত হতে পারে তবে এটি এখনও বৈধ। void main()OTOH কেবল সাধারণ ভুল । ঠিক যেমনটি exit();ভুল, এবং বাদ দেওয়াও #include <stdlib.h>ভুল।
ওয়াইল্ডপ্লাজার

উত্তর:


167

exit(0);পরিবর্তে ব্যবহার করার চেষ্টা করুন । exitফাংশন একটি পূর্ণসংখ্যা প্যারামিটার প্রত্যাশা করে। এবং ভুলবেন না #include <stdlib.h>


4
Man পৃষ্ঠা বলছেন "` EXIT_SUCCESS এবং EXIT_FAILURE ব্যবহার 0 ব্যবহার এবং 1 বা মত কিছু অশূন্য মানের চেয়ে (অ-ইউনিক্স পরিবেশের সাথে) সামান্য বেশি পোর্টেবল -1 `।"
Mawg বলেছেন পুনর্বহাল মনিকা

82

exitফাংশন, stdlib হেডারের মধ্যে ঘোষিত হয় তাই আপনি থাকতে হবে

#include <stdlib.h>

আপনার প্রোগ্রামের শীর্ষে ব্যবহার করতে সক্ষম হবেন exit

এটিও exitএকটি পূর্ণসংখ্যার যুক্তি নেবে তা নোট করুন , সুতরাং আপনি এটির মতো কল করতে পারবেন না exit(), আপনাকে যেমন exit(0)বা হিসাবে কল করতে হবে exit(42)। 0 এর অর্থ সাধারণত আপনার প্রোগ্রামটি সফলভাবে সমাপ্ত হয়েছে এবং ননজারো মানগুলি ত্রুটি কোড হিসাবে ব্যবহৃত হয়।

এছাড়াও পূর্বনির্ধারিত ম্যাক্রোগুলি EXIT_SUCCESSএবং EXIT_FAILUREযেমনexit(EXIT_SUCCESS);


4
+1 কেবলমাত্র exitপূর্ণসংখ্যার আর্গুমেন্ট গ্রহণ করে তা উল্লেখ করার জন্য নয় , তবে কেন এটি পূর্ণসংখ্যার যুক্তি নেয় এবং কিছু সংকলককে সুস্পষ্টর প্রয়োজন তা ব্যাখ্যা করে #include <stdlib.h>
Variadicism

উল্লিখিত পূর্বনির্ধারিত ম্যাক্রোগুলি সংকলনের সময় সংজ্ঞায়িত করা হয়, তাই না?
carloswm85

12

exit(int code);stdlib.hআপনি একটি প্রয়োজন যাতে ঘোষণা করা হয়

#include <stdlib.h>

এছাড়াও:
- আপনার কাছে কোনও প্যারামিটার নেই exit(), এটির সরবরাহ সরবরাহ প্রয়োজন int
- এই বইটি পুড়িয়ে ফেলুন, এটি ব্যবহার করে gotoযা (সবার জন্য লিনাক্স কার্নেল হ্যাকারদের জন্য) খারাপ, খুব, খুব , খুব খারাপ।

সম্পাদনা:
ওহ, এবং

void main()

খুব খারাপ, এটিও:

int main(int argc, char *argv[])

হ্যাঁ এটি বইয়ে লেখা আছে যে বইয়ের সম্পূর্ণতার জন্য আপনি আরও ভাল ব্যবহার করতে পারবেন না, আমি আপনাকে কেবল একটি উদাহরণ দিচ্ছি ... সুতরাং বইটি যে খারাপ!
ক্রাকেন

5
gotoমাঝে মাঝে সঠিক কাজটি করা হয় (এবং লিনাক্স কার্নেল এটির অনেক উদাহরণ সরবরাহ করে তবে এটি কেবলমাত্র এটি ব্যবহার করতে পারে এমন কোড নয়)। তবে ওপির উদাহরণ স্পষ্টভাবে সেগুলির একটি নয়, সুতরাং হ্যাঁ, সেই বইটি পোড়ানো উচিত :)।
অ্যাডাম রোজেনফিল্ড

11

ম্যান প্রস্থান চেষ্টা করুন


উহু! অতঃপর:

#include <stdlib.h>

int main(void) {
  /*  ...  */
  if (error_occured) {
    return (EXIT_FAILURE);
  }
  /*  ...  */
  return (EXIT_SUCCESS);
}

আরও নির্দিষ্টভাবে, কনসোল থেকে "ম্যান 2 প্রস্থান" চেষ্টা করুন। সি ডক্স বেশ বিস্তারিত।
জাস্টিন

ঠিক আপনি @ বার্ট্র্যান্ড মেররান
জাস্টিন

7

exit()ফাংশন একটি আর্গুমেন্ট ছাড়া একটি রিটার্ন টাইপ সঙ্গে ফাংশনের একটি প্রকার। এটি stdlib শিরোলেখ ফাইল দ্বারা সংজ্ঞায়িত করা হয়।

আপনি ব্যবহার করতে হবে ( exit(0) or exit(EXIT_SUCCESS))বা (exit(non-zero)বা exit(EXIT_FAILURE) )


4

নিম্নলিখিত উদাহরণটি exit()ফাংশনটির ব্যবহার দেখায় ।

#include <stdio.h>
#include <stdlib.h>

int main(void) {
    printf("Start of the program....\n");
    printf("Exiting the program....\n");
    exit(0);
    printf("End of the program....\n");
    return 0;
}

আউটপুট

প্রোগ্রামটির সূচনা .... প্রোগ্রামটি
থেকে প্রস্থান করা হচ্ছে ....


2

আপনাকে অবশ্যই #include <stdlib.h>সেই শিরোলেখ ফাইলটি অন্তর্ভুক্ত করতে একটি লাইন যুক্ত করতে হবে এবং exitএকটি মান অবশ্যই দিতে হবে যাতে কিছু পূর্ণসংখ্যার বরাদ্দ করতে হবে exit(any_integer)


2

অভিভাবক প্রসেসে একটি প্রস্থান কোড ফেরত দেওয়ার পাশাপাশি -

ইউনিক্সে, আমার মনে হয় যে একটি গুরুত্বপূর্ণ দিকটি বাদ পড়েছে তা হ'ল প্রস্থান () প্রথম কলে (বিপরীত ক্রমে) সমস্ত ফাংশন, যা অ্যাক্সিট () কল দ্বারা নিবন্ধিত হয়েছিল।

বিশদ জন্য অনুগ্রহ করে SUSv4 দেখুন।


1

অপারেটিং সিস্টেমের মতো ইউনিক্সে প্রস্থান হওয়া সিস্টেম কলগুলির গ্রুপের অন্তর্গত। সিস্টেম কলগুলি এমন বিশেষ কল যা ব্যবহারকারীর কোডকে (আপনার কোড) কার্নেল কোডটিতে কল করতে সক্ষম করে। সুতরাং প্রস্থান কল ওএস-এ নিয়ন্ত্রণ ফিরিয়ে দেওয়ার আগে কিছু ওএস নির্দিষ্ট ক্লিন-আপ ক্রিয়া করে, এটি প্রোগ্রামটি সমাপ্ত করে।

#include <stdlib.h>

// example 1
int main(int argc, char *argv){
  exit(EXIT_SUCCESS);
}

// example 2
int main(int argc, char *argv){
  return 0;
}

কিছু সংকলক এই দুটি উদাহরণ থেকে আপনাকে একই অপকোড দেবে তবে কিছু দেয় না। উদাহরণস্বরূপ প্রথম ফাংশন থেকে অপকোডে কোনও ধরণের স্ট্যাক পজিশনিং অপকড অন্তর্ভুক্ত থাকবে না যা অন্য কোনও ফাংশনের মতো দ্বিতীয় উদাহরণে অন্তর্ভুক্ত থাকবে। আপনি উভয় উদাহরণ সংকলন করতে পারেন এবং সেগুলি পৃথক করে ফেলতে পারেন এবং আপনি পার্থক্যটি দেখতে পাবেন।

আপনি আপনার কোডের যে কোনও অংশ থেকে প্রস্থান ব্যবহার করতে পারেন এবং নিশ্চিত হন যে প্রক্রিয়াটি সমাপ্ত হয়েছে। পূর্ণসংখ্যা প্যারামিটার অন্তর্ভুক্ত করতে ভুলবেন না।


-2

হেডার ফাইলটি লিখতে #include<process.h>এবং প্রতিস্থাপন exit();সঙ্গে exit(0);। এটি অবশ্যই টার্বো সি তে কাজ করবে; অন্যান্য সংকলকগুলির জন্য আমি জানি না।


4
<প্রক্রিয়া।>> মানহীন। exitফাংশনে ঘোষিত হয় <stdlib.h>
কিথ থম্পসন

<process.h> এই সমস্যাটি সমাধান করবে না। আপনার প্রশ্নটি জিজ্ঞাসা করা বুঝতে পেরেছেন?
কৌতূহলীমাব

-3

খারাপ প্রোগ্রামিং অনুশীলন। গোটো ফাংশন ব্যবহার করা সি প্রোগ্রামিংয়ে সম্পূর্ণ নো। ফাংশন ব্যবহারের জন্য
লেখার মাধ্যমে হেডার ফাইল stdlib.h অন্তর্ভুক্ত করুন । এছাড়াও মনে রাখবেন প্রস্থান () ফাংশনটি একটি পূর্ণসংখ্যার আর্গুমেন্ট নেয়। প্রোগ্রামটি যদি সফলভাবে সমাপ্ত হয় এবং প্রোগ্রামটিতে ত্রুটি থাকে তবে আর্গুমেন্ট হিসাবে কোনও শূন্য মান সহ ফাংশন থেকে প্রস্থান করুন বা ব্যবহার করুন ।#include <iostream.h>exit()exit(0)exit(-1)


4
<iostream.h>সি ++ এর সাথে নির্দিষ্ট এবং এটি <stdlib.h>আসলে যে শিরোনামের প্রয়োজন তা সম্পর্কিত নয় needed একমাত্র পোর্টেবল আর্গুমেন্ট exitফাংশন হয় 0, EXIT_SUCCESSএবং EXIT_FAILURE। ব্যর্থতা বোঝাতে কোনও শূন্য-মান ব্যবহার করা ইউনিক্স-এর মতো সিস্টেমে (এবং সম্ভবত কিছু অন্যান্য) নির্দিষ্ট; পোর্টেবল কোডে এটির উপর নির্ভর করবেন না।
কিথ থম্পসন

-4

stdlib.hআপনার শিরোনামে অন্তর্ভুক্ত করুন এবং তারপরে abort();আপনি যে কোনও জায়গায় কল করুন যাতে আপনি আপনার প্রোগ্রামটি থেকে বেরিয়ে আসতে চান। এটার মত:

switch(varName)
{
    case 1: 
     blah blah;
    case 2:
     blah blah;
    case 3:
     abort();
}

যখন ব্যবহারকারী স্যুইচটিতে প্রবেশ করে এটি এটি গ্রহণ করে এবং 3 কেসটি দিতে যেখানে আপনি abortফাংশনটি কল করেন । এটি এন্টার কী চাপার সাথে সাথেই আপনার স্ক্রিনটি প্রস্থান করবে।


6
abortহয় না এখানে কল, সেটিতে কল করা হবে না যথাযথ জিনিস atexitহ্যান্ডেলার বা ফ্লাশ খোলা ফাইল বাফার। এটি কেবলমাত্র অস্বাভাবিক প্রোগ্রাম সমাপ্তির জন্য ব্যবহার করা উচিত, উদাহরণস্বরূপ ব্যর্থ দাবী ইত্যাদি normal সাধারণ প্রোগ্রাম সমাপ্তির exitজন্য ব্যবহার করা উচিত।
অ্যাডাম রোজেনফিল্ড

-6

Stdlib এবং iostream এর পরিবর্তে প্রক্রিয়া h ব্যবহার করুন ... এটি 100% কাজ করবে।


4
আমি জানি না প্রক্রিয়া। এটি অবশ্যই স্ট্যান্ডার্ড সি নয় এবং এটি সরবরাহ করে না এমন সিস্টেমে কাজ করবে না। <iostream>হেডার C ++ পর্যন্ত সুনির্দিষ্ট; প্রশ্নটি সি সম্পর্কে
কেইথ থমসন

4
এটি ইয়াহু নয়! উত্তর, এটি স্ট্যাক ওভারফ্লো। আপনি যদি উত্তর দেন তবে আপনার প্রথমে কমপক্ষে এটি পরীক্ষা করে নেওয়া দরকার!
wizzwizz4
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.