কনসোল উইন্ডোটি ভিজ্যুয়াল স্টুডিও সি / সি ++ কনসোল অ্যাপ্লিকেশনটি বন্ধ হতে আটকাচ্ছে


464

এটি সম্ভবত একটি বিব্রতকর প্রশ্ন, কারণ উত্তর অন্ধভাবেই স্পষ্ট বলে সন্দেহ নেই।

আমি কয়েক বছর ধরে ভিজ্যুয়াল স্টুডিও ব্যবহার করেছি, তবে এই প্রথম কোনও কনসোল অ্যাপ্লিকেশন বিকাশ করেছি।

আমি যখন আমার অ্যাপ্লিকেশনটি চালনা করি তখন কনসোল উইন্ডোটি পপ আপ হয়, প্রোগ্রাম আউটপুট উপস্থিত হয় এবং তারপরে অ্যাপ্লিকেশনটি প্রস্থান করার সাথে সাথে উইন্ডোটি বন্ধ হয়ে যায়।

আমি আউটপুটটি পরীক্ষা না করা পর্যন্ত বা উইন্ডোটি বন্ধ হয়ে যাওয়ার পরে ফলাফলগুলি দেখার আগে পর্যন্ত কী এটি খোলা রাখার কোনও উপায় আছে?


মনোডেলফেলফ যা প্রত্যাশা করছেন তা করে।
ctrl-alt-delor 18

3
নীচে অনেকগুলি উত্তর রয়েছে তাই আমি এখানে একটি উত্তর অনুলিপি করছি: আপনি যদি ভিএস2017 ব্যবহার করছেন তবে সরঞ্জাম->
বিকল্পগুলি

একমত। আমি মনে করি ভিএস 2017 এর সর্বোত্তম উত্তর হ'ল ক্রোনাক্সারের একটি new
সমস্ত ক্রোধ

উত্তর:


466

আপনি যদি ডিবাগিং ছাড়াই চালিত হন (Ctrl + F5) তবে ডিফল্টরূপে এটি আপনাকে উইন্ডোটি বন্ধ করে ফিরতে চাপতে অনুরোধ করে। আপনি যদি ডিবাগারটি ব্যবহার করতে চান তবে আপনার শেষ লাইনে একটি ব্রেকপয়েন্ট স্থাপন করা উচিত।


268
আপনার যদি সি ++ অ্যাপ থাকে এবং ডিবাগিং ছাড়াই চালানো হয় এবং কনসোল উইন্ডোটি এখনও বন্ধ হয়ে যায়, আপনার কনফিগারেশন প্রোপার্টি / লিংক / সিস্টেমের অধীনে সাবসিস্টেমটি স্পষ্টভাবে কনসোল-এ সেট করতে হবে remember আপনি যদি খালি প্রকল্প দিয়ে শুরু করেন যা সাবসিস্টেমটিকে সেট না করে ছেড়ে দেয় তবে এটি ঘটতে পারে।
ট্রেভর রবিনসন

4
আমার পক্ষে কাজ করেনি :( কনসোল উইন্ডোটি তত্ক্ষণাত খোলে এবং বন্ধ হয়ে যায়, তবে লগটি বিরতি দেয় এবং
এফ

40
সঠিক উত্তরটি হ'ল @ ট্রেভররোবিনসন: এটির প্রসারিত সংস্করণটি যদি কনফিগার বৈশিষ্ট্যগুলি কোথায় তা খুঁজে পেতে আপনার সমস্যা হয়: ভিজুয়াল স্টুডিও> বৈশিষ্ট্যগুলি> কনফিগারেশন বৈশিষ্ট্যগুলি> লিংক> সিস্টেমে আপনার প্রকল্পে ডান ক্লিক করুন, সাবসিস্টেমটি "এ পরিবর্তন করুন" কনসোল "
প্লাগহ্যামার

3
ট্রেভর রবিনসন ঠিক বলেছেন। যদি আপনি একটি ফাঁকা প্রকল্প এবং সি ++ আইটেম শুরু করেন। আপনাকে ভিউ-> সম্পত্তি পরিচালক-> সম্পত্তি (রেঞ্চ আইকন) -> কনফিগে যেতে হবে। বৈশিষ্ট্য-> লিংকার-> সিস্টেম-> সাবসিস্টেম-> পপ-ডাউন মেনুতে, কনসোলটি চয়ন করুন।
সর্বাধিক শ্রদ্ধেয় স্যার

10
আমি ভিএস সম্প্রদায় 2017 এ ctrl+f5কাজ করছি working কাজ করছি না, Propertiesআমি যখন ডান ক্লিক প্রকল্প করি তখন কিছুই হয় না , এছাড়াও wrench iconগ্রেড আউট হয়।
কেতন

232

আপনার প্রকল্পে ডান ক্লিক করুন

বৈশিষ্ট্য> কনফিগারেশন বৈশিষ্ট্য> লিংক> সিস্টেম

নির্বাচন করুন : কনসোল (কনসোল / সাব-সিস্টেম) মধ্যে SubSystemবিকল্প অথবা আপনি শুধু টাইপ করতে পারেন কনসোল পাঠ্য ক্ষেত্রে!

এখন চেষ্টা করুন ... এটি কাজ করা উচিত


এটি আমার ভিএস ২০১৩ এক্সপ্রেসের জন্য কাজ করেছে, তবে গৃহীত উত্তরটি তা দেয়নি। অত্যন্ত আশ্চর্যজনক, গ্রহণযোগ্য উত্তরটি অতীতে আমি সমস্ত ভিজ্যুয়াল স্টুডিও সংস্করণগুলির জন্য কাজ করেছি।
মাইকেল ক্যালভিন

9
@ মিশেলক্যালভিন আপনাকে এটি সেট করার পরে Ctrl + F5 দিয়ে চালাতে হবে, এটি হ'ল পিক্স।
জনাথন মে

@ জোনাথনমী যেমন বলেছে আপনি এখনও Ctrl + F5 চালিয়ে গেছেন। এটি আমার ভিজ্যুয়াল স্টুডিও 2015 সালে ইতিমধ্যে সেট করা ছিল, তাই প্রথম উত্তরটি সবচেয়ে বেশি সহায়তা করেছিল।

এটা আসলে সঠিক। পরিচিতরা CTRL+F5যদি ব্যর্থ হয় তবে আপনি বলুন, একটি খালি প্রকল্পে একটি নতুন সি ++ ফাইল যুক্ত করুন।
ব্যবহারকারী 2023370

ভিজ্যুয়াল স্টুডিও এক্সপ্রেস 2015-এ আমার জন্য কাজ করেছেন Thanks ধন্যবাদ।
এলএইচসি

44

সি / সি ++ এর জন্য এখানে একটি উপায় রয়েছে:

#include <stdlib.h>

#ifdef _WIN32
    #define WINPAUSE system("pause")
#endif

এটি আপনার প্রোগ্রামের শীর্ষে রাখুন এবং যদি এটি একটি উইন্ডোজ সিস্টেমে থাকে ( #ifdef _WIN32) তবে এটি ম্যাক্রো নামে একটি ম্যাক্রো তৈরি করবে WINPAUSE। আপনি যখনই আপনার প্রোগ্রামটি বিরতি দিতে চান, কল করুন WINPAUSE;এবং এটি ডস কমান্ডটি ব্যবহার করে প্রোগ্রামটি বিরতি দেবে। ইউনিক্স / লিনাক্সের মতো অন্যান্য সিস্টেমের জন্য কনসোলটি যাইহোক প্রোগ্রাম থেকে প্রস্থান করা উচিত নয়।


এই পদ্ধতিটি ভিজ্যুয়াল সি ++ এ কাজ করে না (যদি না আপনি কিছু শিরোনাম অন্তর্ভুক্ত করেন?)
wmac

2
@Wmac আপনাকে উইন্ডোজ।
শিরোনামটি

1
আমি কোনও লাইব্রেরি বা নেমস্পেস অন্তর্ভুক্ত করি নি তবে এটি সঠিকভাবে চলে, অনেক ধন্যবাদ।
হালিল ইব্রাহিম ওমাইস্ক

1
দয়া করে এটি করবেন না। pauseকমান্ড উইন্ডোজ নির্দিষ্ট।
ফায়ারগুরাফিকু

ভিজ্যুয়াল স্টুডিও 2013 এক্সপ্রেসে আমার জন্য কাজ করেছেন। :)
অনির্বাণ

32

যান ডিবাগ মেনু-> স্টার্টওয়াথআউটব্যাগিং টিপুন


এটি ভিএস ২০০৮ এ এমনকি কোনও বিকল্প নয় যদি না সি # বিকাশ পরিবেশ বেছে নেওয়া না হয়। সিটিআরএল + এফ 5 যদিও কাজ করে। আপনি এটিকে সরঞ্জাম> কাস্টমাইজ করার মাধ্যমে সরঞ্জামদণ্ডে একটি বোতাম হিসাবে যুক্ত করতে পারেন।
পেরি 1

আপনার যদি একাধিক প্রকল্প প্রাসঙ্গিকটিকে স্টার্টআপ প্রকল্প হিসাবে সেট করে থাকে
সিএডি ব্লোক

27

আপনি যদি নেট ব্যবহার করে থাকেন Console.ReadLine()তবে প্রোগ্রাম শেষ হওয়ার আগে রাখুন।

এটি অপেক্ষা করবে <ENTER>


9
+1 - হয় তা হয় বা Console.ReadKey()কেবল কোনও কীটির জন্য অপেক্ষা করুন।
ফ্রেডরিক মের্ক

অদ্ভুত, এটি আমার অ্যাপ্লিকেশনটিতে কোনও প্রভাব ফেলবে না। এটি এখনও ব্যবহারকারীর ইনপুটটির জন্য অপেক্ষা না করে বন্ধ হয়ে যায়।
কোকোডোকো

4
তারপরে আপনার কোডটি সম্ভবত এই পর্যায়ে পৌঁছানোর আগেই প্রস্থান করা হবে।
প্রকৃতপক্ষে

20

ভিজ্যুয়াল স্টুডিও 2017 (15.9.4) থেকে শুরু করে একটি বিকল্প রয়েছে:

Tools->Options->Debugging->Automatically close the console

ভিজ্যুয়াল স্টুডিও ডকুমেন্টেশন থেকে সংশ্লিষ্ট খণ্ড :

ডিবাগিং বন্ধ হয়ে গেলে কনসোলটি স্বয়ংক্রিয়ভাবে বন্ধ করুন:

ডিবাগিং অধিবেশন শেষে ভিজ্যুয়াল স্টুডিওকে কনসোলটি বন্ধ করতে বলে।


2
আমি সবেমাত্র ভিএস2017 এবং ভিএস2019 এ এটি পরীক্ষা করেছি। এটি কনসোল-এ সাবসিস্টেম সেট করা এবং এই বিকল্পটি বন্ধ করা উভয়ের প্রয়োজন। এক বা অন্যটি থাকা বা উইন্ডোটি স্বয়ংক্রিয়ভাবে বন্ধ হয়।
কেসি

যদি আমি একই সমাধান থেকে একাধিক প্রকল্প চালু করি তবে এটি আমার জন্য উইন্ডোটি বন্ধ করে দেয়।
সার্জ রোগাচ

আমি মনে করি এটি ভিএস 2017 এবং সামনের জন্য সঠিক উত্তর। খুব খারাপ এটি পুরানো সংস্করণগুলিতে নেই।
সমস্ত ক্রোধ

13

রিটার্নের getchar()আগে ডেকে কল করার চেষ্টা করুন main()


একটি সাধারণ হ্যালো নেম কনসোল অ্যাপ্লিকেশানের জন্য ভিএস ২০০৮ এ কাজ করে না। cout, cin, cout, getchar (), কনসোলটি এখনও বন্ধ। চুক্তিটি কি ছিল?
পেরি 1

1
গেটচর () এর ঠিক আগে যদি আপনার কোট থাকে তবে দুবার গেটচর () লাগানোর চেষ্টা করুন। getchar () একটি চর প্রত্যাশা করে এবং আপনি এটি ইতিমধ্যে cout দিয়ে দিচ্ছেন ... যদি এটি সাহায্য করে তবে আমাকে জানান :)
মাগারুসু

12

(/ সাবস্কিস্টম: কনসোল) আমার বনাম ২০১৩ এর জন্য কাজ করে নি (আমার কাছে এটি ইতিমধ্যে ছিল)।

"ডিবাগিং ছাড়াই রান করুন" কোনও বিকল্প নয়, যেহেতু আমি ডিবাগিং এবং আউটপুট দেখার মধ্যে পরিবর্তন করতে চাই না।

আমি দিয়ে শেষ

int main() {
  ...
#if _DEBUG
  LOG_INFO("end, press key to close");
  getchar();
#endif // _DEBUG
  return 0;
}

সমাধান Qtcreator প্রাক 2.6 ব্যবহৃত হয়। এখন যখন কিউটি বাড়ছে, বনাম অন্য পথে চলছে। যেমনটি আমার মনে আছে, ভার্সু ২০০৮-এ আমাদের এ জাতীয় কৌশলগুলির দরকার ছিল না।


7

এখানে একটি সমাধান রয়েছে যা (1) তে কোনও কোড পরিবর্তন বা ব্রেকপয়েন্টের প্রয়োজন নেই এবং (2) প্রোগ্রাম সমাপ্তির পরে বিরতি দেয় যাতে আপনি মুদ্রিত সমস্ত কিছু দেখতে পান see এটি F5 বা Ctrl + F5 এর পরে বিরতি দেবে। বড় ক্ষতিটি হ'ল ভিএস ২০১৩ এক্সপ্রেসে (পরীক্ষিত হিসাবে) এটি চিহ্নগুলি লোড করে না, সুতরাং ডিবাগিং খুব সীমাবদ্ধ।

  1. একটি ব্যাচের ফাইল তৈরি করুন। runthenpause.batনিম্নলিখিত বিষয়গুলি সহ আমি আমার কল করেছি :

    %1 %2 %3 %4 %5 %6 %7 %8 %9
    pause

    প্রথম লাইনটি আপনি যে কোনও কমান্ড সরবরাহ করবেন এবং আটটি আর্গুমেন্ট পর্যন্ত চলবে। দ্বিতীয় লাইন ... বিরতি দেবে

  2. প্রকল্পের বৈশিষ্ট্য খুলুন | কনফিগারেশন বৈশিষ্ট্য | ডিবাগ।

  3. "কমান্ড যুক্তি" পরিবর্তন করুন $(TargetPath)(বা "কমান্ড" এ যা কিছু আছে)।
  4. "কমান্ড" এর সম্পূর্ণ পথে পরিবর্তন করুন runthenpause.bat
  5. ঠিক আছে আঘাত।

এখন, আপনি যখন চালনা runthenpause.batকরবেন তখন আপনার অ্যাপ্লিকেশনটি চালু করবে এবং আপনার অ্যাপ্লিকেশনটি সমাপ্ত হওয়ার পরে, কনসোল আউটপুটটি আপনাকে দেখার জন্য বিরতি দেবে।

চিহ্নগুলি কীভাবে লোড করা যায় তা আমি যদি একটি আপডেট পোস্ট করব। আমি চেষ্টা /Z7প্রতি এই কিন্তু তা সাফল্য পায়নি।


1
এটি এখনও ডিবাগিং সমর্থন করে না, তবে কমপক্ষে এটি অন্য সমস্ত উত্তরগুলির বিপরীতে ভিএলডি যেমন আউটপুট যেমন দেখতে না পারা হবে তার বিষয়টি বিবেচনা করে ।
মার্টিন হেনিংস

6

আপনার কোডের সর্বশেষ লাইন হিসাবে রেখে দিন:

system("pause");

3

আপনি কমান্ড প্রম্পট থেকে আপনার এক্সিকিউটেবল চালাতে পারেন। এইভাবে আপনি সমস্ত আউটপুট দেখতে পেলেন। অথবা, আপনি এরকম কিছু করতে পারেন:

int a = 0;
scanf("%d",&a);

return YOUR_MAIN_CODE;

এবং এভাবে আপনি aভেরিয়েবলের জন্য ডেটা প্রবেশ না করা পর্যন্ত উইন্ডোটি বন্ধ হবে না ।


3

যোগ করুন | প্রকল্পের বৈশিষ্ট্যগুলিতে ডিবাগিং বিভাগের অধীনে কমান্ড আর্গুমেন্ট বক্সে বিরতি দিন।


4
এটি যদি কাজ করে তবে এটি দুর্দান্ত সমাধান হবে। pauseএটি কেবল ব্যাচ ফাইলগুলিতে কাজ করে বলে মনে হচ্ছে এবং এটি এসটিডিআইএন-এ আপনার প্রোগ্রাম থেকে ইনপুট প্রাপ্ত হওয়ার পরে, এটি পাঠ্যটি পুনরায় মুদ্রণ করবে না। আমি এর |সাথে প্রতিস্থাপনের চেষ্টা করেছি &&, তবে এর কোনও ফল হয়নি - সম্ভবত এটি কারণ এটি কোনও কমান্ড শেল (সেমিডি.এক্সি) দিয়ে কার্যকর করা হচ্ছে না।
ব্রায়ান ভ্যান্ডেনবার্গ

3

এটি একটি বাহ্যিক কমান্ড লাইন উইন্ডোতে খোলার জন্য কেবল CNTRL + F5 টিপুন (ভিজ্যুয়াল স্টুডিওতে এটির নিয়ন্ত্রণ নেই) control

যদি এটি কাজ না করে তবে আপনার কোডের শেষে নিম্নলিখিতটি যুক্ত করুন:

Console.WriteLine("Press any key to exit...");
Console.ReadKey();

কোডটি শেষ হয়ে যাওয়ার পরে আপনি টার্মিনাল উইন্ডোটি বন্ধ করার জন্য কোনও কী টিপে অপেক্ষা করুন।

আপনি যদি একাধিক জায়গায় এটি করতে চান তবে উপরের কোডটি একটি পদ্ধতিতে (উদাহরণস্বরূপ private void Pause()) রাখুন এবং Pause()যখনই কোনও প্রোগ্রামের সম্ভাব্য প্রান্তে পৌঁছান তখন কল করুন ।


আমি যখন সিএনটিআরএল + এফ 5 করি এটি ততক্ষণে বন্ধ হয়ে যায়? আপনি কিভাবে এটি ঠিক করবেন?
কলাত

দ্বিতীয় সমাধানটি আমি যা খুঁজছিলাম!
রোজ

আমি যখন Ctrl + F5 চাপি তখন কিছুই ঘটে না। এটি আমার পক্ষে কাজ করত তবে হঠাৎ করেই এটি কাজ করা বন্ধ করে দেয়।
নাতাশা

2

কিছুটা ভাল সমাধান:

atexit([] { system("PAUSE"); });

আপনার প্রোগ্রামের শুরুতে।

পেশাদাররা:

  • std :: প্রস্থান () ব্যবহার করতে পারেন
  • মূল থেকে একাধিক রিটার্ন পেতে পারে
  • আপনি নিজের প্রোগ্রামটি ডিবাগারের অধীনে চালাতে পারেন
  • আইডিই স্বাধীন (যদি আপনি এর cin.sync(); cin.ignore();পরিবর্তে কৌশলটি ব্যবহার করেন তবে + ওএস স্বাধীন system("pause");)

কনস:

  • কোড পরিবর্তন করতে হবে
  • স্টাডে বিরতি দেবেন না :: সমাপ্ত ()
  • আইডিই / ডিবাগার সেশনের বাইরে আপনার প্রোগ্রামে এখনও ঘটবে; আপনি উইন্ডোজ ব্যবহার করে এটি রোধ করতে পারেন:

extern "C" int __stdcall IsDebuggerPresent(void);
int main(int argc, char** argv) {
    if (IsDebuggerPresent())
        atexit([] {system("PAUSE"); });
    ...
}

খুব খারাপ পরামর্শ।
চিয়ার্স এবং এইচটিএইচ - আলফ

কেন আপনি বিস্তারিত বলতে পারেন?
ঘাসানপিএল

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

2

হয় ব্যবহার:

  1. cin.get();

অথবা

  1. system("pause");

main()ফাংশন শেষে এবং returnবিবৃতি দেওয়ার আগে এগুলির দুটি তৈরির বিষয়টি নিশ্চিত করুন ।



2

আমার ক্ষেত্রে, আমি ভিসি 2017 সম্প্রদায় সংস্করণে একটি খালি সি ++ প্রকল্প তৈরি করার সময় আমি এটির অভিজ্ঞতা অর্জন করেছি। কনফিগারেশন বৈশিষ্ট্যগুলির অধীনে আপনাকে "কনসোল (/ সাবস্কিস্টেম: কনসোল)" এ সাবসিস্টেম সেট করতে হবে।

  1. "দেখুন" এ যান তারপরে "সম্পত্তি পরিচালক" নির্বাচন করুন
  2. প্রকল্প / সমাধানটিতে ডান ক্লিক করুন এবং "সম্পত্তি" নির্বাচন করুন। এটি একটি পরীক্ষার সম্পত্তি পৃষ্ঠা খুলবে
  3. লিঙ্কারে নেভিগেট করুন তারপরে "সিস্টেম" নির্বাচন করুন
  4. "সাবসিস্টেম" এ ক্লিক করুন এবং একটি ড্রপ ডাউন উপস্থিত হবে
  5. "কনসোল (/ সাবস্কিস্ট: কনসোল)" চয়ন করুন
  6. প্রয়োগ করুন এবং সংরক্ষণ করুন
  7. পরের বার আপনি "CTRL + F5" দিয়ে আপনার কোডটি চালাবেন, আপনার আউটপুটটি দেখা উচিত।

0

আমদানি সহ ভিজ্যুয়াল স্টুডিও 2015 । কারণ আমি ঘৃণা করি যখন কোড উদাহরণগুলি প্রয়োজনীয় আমদানি দেয় না।

#include <iostream>;

int main()
{
    getchar();
    return 0;
}

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