PDA

View Full Version : مبتدی: مشکل در ران شدن برنامه در C



raminlich
دوشنبه 15 اردیبهشت 1393, 23:34 عصر
سلام به همگی
من تازه واردم به C وقتی برنامه رو اجرا میزنم یه صفحه میاد زود میره اصلا نمیتونم ببینمش
کدی چیزی داره که باید اخر برنامه اضاف کنم؟

amir.bakhtiari
دوشنبه 15 اردیبهشت 1393, 23:49 عصر
بایه جستجوی کوچولو میتونسی پیدا کنی
آخر کدت (main) :
getchar()

system("pause")

(while(c=1) printf(cpp=0
سه شنبه 16 اردیبهشت 1393, 13:21 عصر
استفاده از دستور رو به رو که نوشتم نادرسته :


system("PAUSE")


اول: دستور pause در هر سیستم عاملی قابل اجرا نیست چون باید دستور pause در Command prompt وجود داشته باشه تا اجرا بشه.
دوم: دستور pause برای مشکوک و متوقف سازی روند اجرای برنامه batch قابل استفاده هست; این کار در برنامه نویسی اشباهه; برخی از Anti-Virus ها و Anti-Spyware ها ممکنه تکرار این عمل رو تهدید یا عمل کثیفی تلقی کنن; بنابرین ممکنه اقداماتی توسط اونها انجام بشه. از جهت دیگه، امکان داره در پوشه system32 (که دستورِ داخل (" ") درون پوشه وجود داره) درواقع بدافزاری وجود داشته باشه و کمین کرده باشه تا بخواد زهرش رو در روز مبادا بریزه; حتی ممکنه به عنوان مدیر سیستم اجرا بشه و هرکاری که شما به عنوان مدیر سیستم می تونین انجام بدین رو اون هم بتونه انجام بده. روشی که بدافزار می تونه اجرا بشه اینه که به صورت یک فایل اجرایی (exe.) داخل پوشه system32 درایو C شما باشه و نامش برای مثال pausee یا ppause یا .pause یا stop باشه; اما تا اونجایی که می دونم، نامش نمی تونه خود pause باشه چون CMD اجرا نمی کنه و تنها دستور pauseی که از قبل در خودش نوشته شده رو اجرا می کنه. به هرحال این کار یک ریسک محسوب میشه. ممکنه یک برنامه نویس بعد از اینکه مشاهده کرد دستور pause چه کار جالبی انجام میده، از روی کنجکاوی هر چی دلش میخواد داخل (" ") بنویسه و درواقع برخی از پیش بینی های شخص بدافزار نویس رو به واقعیت تبدیل کنه (مثلا یک بدافزار اجرایی می تونه در پوشه system32 وجود داشته باشه که نامش ppause باشه، و برنامه نویس اگر اشتباه تایپی در نوشتن pause مرتکب بشه و درواقع بنویسه ppause، در این صورت بدافزار به تمیزی اجرا میشه. به این فکر نکنین که چطور یک بدافزار میخواد داخل پوشه system32 قرار بگیره; راه های فراوانی برای این کار وجود داره; قرار نیست که کاربر با دستهای خودش بدافزاری رو داخل پوشه مربوطه paste کنه.
رامین جان، اگر میخوای صفحه CMD یهو غیب نشه، بهترین توصیه، استفاده از یکی از دستورات رو به رو هست :


system("TIMEOUT /T 60") /*وقتی که میخوای سی ام دی طی شصت ثانیه بسته بشه اما همچنان با فشاردادن هر کلیدی بسته بشه*/
system("TIMEOUT /T 60 /NOBREAK") /*وقتی که میخوای سی ام دی طی شصت ثانیه بسته بشه اما همچنان با فشاردادن دو کلید کنترول+سی بسته بشه*/
system("TIMEOUT /T -1") /*این روش همانند دستور پُز عمل می کنه; یعنی محدودیت زمانی وجود نداره و برای بسته
شدن سی ام دی از تو انتظار فشار دادن کلیدی رو می کشه;خوبیش اینه که مثل پُز به برنامه ات مشکوک نمیشه*/

/*نهایت زمانی که می تونی سی ام دی رو منتظر نگه داری، حداقل 1- و حداکثر 99999 ثانیه هست*/


گذشته از اینها، بهتره از کامپایلر GCC استفاده کنی; بهترین کامپایلر زبان C همینه که در لینوکس ازش استفاده میشه; همچنان می تونی به صورت آنلاین در وبسایت زیر کدهای زبان C رو کامپایل کنی. این وبسایت از کامپایلر GCC استفاده می کنه.

http://www.compileonline.com/compile_c_online.php (http://www.compileonline.com/compile_c_online.php)

motherboard
سه شنبه 16 اردیبهشت 1393, 15:10 عصر
البته درC++‎‎‎‎‎ با استفاده از هدر فایل iostream میشه توسط دستور ()cin.get هم باعث ثابت نگه داشتن برنامه شد.و فرقی که با دستور ()getch در هدرفایل conio.h داره اینه که توی ()cin.get وقتی کاربر کاراکتری رو فشار میده صفحه نمیره و کاراکتر ثبت میشه اما در ()getch وقتی کاربر کلیدی رو می زنه صفحه محو میشه.


#include <iostream>
using namespace std;
int main()
{cout<<"hellow";
cin.get();
}



#include <iostream>
#include <conio.h>
using namespace std;
int main()
{cout<<"hellow";
getch();
}

amir.bakhtiari
سه شنبه 16 اردیبهشت 1393, 21:05 عصر
اول: دستور pause در هر سیستم عاملی قابل اجرا نیست چون باید دستور pause در Command prompt وجود داشته باشه تا اجرا بشه.
دوم: دستور pause برای مشکوک و متوقف سازی روند اجرای برنامه batch قابل استفاده هست; این کار در برنامه نویسی اشباهه; برخی از Anti-Virus ها و Anti-Spyware ها ممکنه تکرار این عمل رو تهدید یا عمل کثیفی تلقی کنن; بنابرین ممکنه اقداماتی توسط اونها انجام بشه. از جهت دیگه، امکان داره در پوشه system32 (که دستورِ داخل (" ") درون پوشه وجود داره) درواقع بدافزاری وجود داشته باشه و کمین کرده باشه تا بخواد زهرش رو در روز مبادا بریزه; حتی ممکنه به عنوان مدیر سیستم اجرا بشه و هرکاری که شما به عنوان مدیر سیستم می تونین انجام بدین رو اون هم بتونه انجام بده. روشی که بدافزار می تونه اجرا بشه اینه که به صورت یک فایل اجرایی (exe.) داخل پوشه system32 درایو C شما باشه و نامش برای مثال pausee یا ppause یا .pause یا stop باشه; اما تا اونجایی که می دونم، نامش نمی تونه خود pause باشه چون CMD اجرا نمی کنه و تنها دستور pauseی که از قبل در خودش نوشته شده رو اجرا می کنه. به هرحال این کار یک ریسک محسوب میشه. ممکنه یک برنامه نویس بعد از اینکه مشاهده کرد دستور pause چه کار جالبی انجام میده، از روی کنجکاوی هر چی دلش میخواد داخل (" ") بنویسه و درواقع برخی از پیش بینی های شخص بدافزار نویس رو به واقعیت تبدیل کنه (مثلا یک بدافزار اجرایی می تونه در پوشه system32 وجود داشته باشه که نامش ppause باشه، و برنامه نویس اگر اشتباه تایپی در نوشتن pause مرتکب بشه و درواقع بنویسه ppause، در این صورت بدافزار به تمیزی اجرا میشه. به این فکر نکنین که چطور یک بدافزار میخواد داخل پوشه system32 قرار بگیره; راه های فراوانی برای این کار وجود داره; قرار نیست که کاربر با دستهای خودش بدافزاری رو داخل پوشه مربوطه paste کنه.
رامین جان، اگر میخوای صفحه CMD یهو غیب نشه، بهترین توصیه، استفاده از یکی از دستورات رو به رو هست :

اولن این دوستمون نگفت که توچه سیستم عاملی داره کار میکنه
درضمن دسستون درد نکنه بابت توضیحاتتون - ولی فکر نکنم system("pause") نیاز به این هم توضیحات داشته باشه



سلام به همگی
من تازه واردم به C وقتی برنامه رو اجرا میزنم یه صفحه میاد زود میره اصلا نمیتونم ببینمش
کدی چیزی داره که باید اخر برنامه اضاف کنم؟

(while(c=1) printf(cpp=0
سه شنبه 16 اردیبهشت 1393, 21:38 عصر
اولن این دوستمون نگفت که توچه سیستم عاملی داره کار میکنه
درضمن دسستون درد نکنه بابت توضیحاتتون - ولی فکر نکنم system("pause") نیاز به این هم توضیحات داشته باشه

Windows یا DOS.
استفاده از PAUSE کار دُرُستی در برنامه نویسی نیست.
مخلص شما.