انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: مشکل در c  (دفعات بازدید: 4455 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین رجبی

  • Full Member
  • *
  • ارسال: 156
  • جنسیت : پسر
    • پایگاه شخصی علی رجبی
مشکل در c
« : 09 فروردین 1388، 07:51 ب‌ظ »
سلام من کد زیر را نوشتم اما فقط scanf اول را میخواند اما چند بار هم که compile , build یا با gedit ذخیره میکنم درست کار میکنه مشکل از چیه ؟
من از geary , gcc, استفاده میکنم البته g++, bulid-esstrial هم دارم


#include <stdio.h>

int  main ()
{
//My variable
char name;
int a,b,c,sum,z;

printf("Please enter your name :\n");
scanf("%c",&name);
printf("Please enter 3 number :\n");
scanf("%d %d %d",&a,&b,&c);
sum=a+b+c;
z=a*b*c;
printf("Hey %c \n result:\n sum= %d zarb =%d",name,sum,z);
scanf("%d",&a);
return 0;
}


البته این قسمت را هم به این شکل هم نوشتم

scanf("%d%d%d",&a,&b,&c);
؟؟؟؟؟؟ ::)


یا علی

آفلاین z.k

  • Full Member
  • *
  • ارسال: 217
پاسخ به: مشکل در c
« پاسخ #1 : 09 فروردین 1388، 09:59 ب‌ظ »
سلام

من برنامه رو با gcc کامپایل کردم و مشکلی نداشت !

gcc sample.c -o sample

آفلاین Aref

  • Full Member
  • *
  • ارسال: 116
  • جنسیت : پسر
  • شهید پرفسور مجید شهریاری
پاسخ به: مشکل در c
« پاسخ #2 : 10 فروردین 1388، 01:08 ق‌ظ »
با سلام
من هم اشکالی در برنامتون نمی‌بینم و به خوبی کامپایل و اجرا می‌شود ;)
یک مقداری پرسشتون نامفهومه!! ::)
نقل‌قول
اما چند بار هم که compile , build یا با gedit ذخیره میکنم درست کار میکنه مشکل از چیه ؟
برای اینکه بتوان بهتر در مورد روند برنامه قضاوت کرد اندکی در کد شما دست بردم و همراه با خروجیش اینجا قرار می‌دم تا شاید کمک کنه. ::) :)
#include <stdio.h>

int  main ()
{
//My variable
char name;
int a,b,c,sum,z;

printf("Please enter your name :\n");
scanf("%c",&name);
printf("Please enter 3 number :\n");
scanf("%d %d %d",&a,&b,&c);
sum=a+b+c;
z=a*b*c;
printf("Hey %c \n result:\n sum= %d zarb =%d\n",name,sum,z);
printf("Please enter first number again :\n");
scanf("%d",&a);
printf("new value of a is %d",a);
return 0;
}
خروجی همراه با مقادیر داده شده:
Please enter your name :
w
Please enter 3 number :
1 2 3
Hey w
 result:
 sum= 6 zarb =6
Please enter first number again :
5
new value of a is 5
موفق باشید. \\:D/

آفلاین رجبی

  • Full Member
  • *
  • ارسال: 156
  • جنسیت : پسر
    • پایگاه شخصی علی رجبی
پاسخ به: مشکل در c
« پاسخ #3 : 10 فروردین 1388، 07:19 ب‌ظ »
سلام ممنون متوجه مشکل شدم من کاراکتر پاسکال را با سی اشتباه گرفته بودم بجای یک حرف چند حرف میزدم مشکل از این بود .

خدایی debug کردن برنامه با c خیلی سخت تر

یاعلی

آفلاین z.k

  • Full Member
  • *
  • ارسال: 217
پاسخ به: مشکل در c
« پاسخ #4 : 10 فروردین 1388، 08:58 ب‌ظ »
debug کردن برنامه با c سخت نیست!
برای debug کردن میتونید از gdb استفاده کنید.
برای اینکار موقع کامپایل از سوییچ -g تو کاموایل استفاده کنید.
g++ sample.cpp -g -o sampleموقع اجرا :
gdb ./sampleبرای کار با gdb مطلب زیاد هست، یه search ساده میخواد.

آفلاین رجبی

  • Full Member
  • *
  • ارسال: 156
  • جنسیت : پسر
    • پایگاه شخصی علی رجبی
مشکل جدید در c
« پاسخ #5 : 11 فروردین 1388، 08:08 ب‌ظ »
سلام
من یک برنامه نوشتم مشکلی هم نداره اما ما چون در دانشگاه از turbo c++ یا borland turbo c++ استفاده میکنم

از کتابخانه conio.h و تابع getch() برای بسته نشدن برنامه قبل دیدن نتایج استفاده میشه ولی هم g++ , gcc هر دو میگن این ها وجود نداره ؟؟؟ راه نیست یا کامپایلری که شبیه اونها باشه ؟
تابع clrscr() هم نداره !!!
من در لینوکس مشکلی ندارم چون صفحه بسته نمیشه اما در ویندوز این برنامه را استادمون کامپایل کنه مشکل داره چه کنم ؟

یک سوال دیگه برنامه geany سورس را میده کامپایلر و execute را که میزنی اجرا میشه اما اگر من برای دوستم که فرض که لینوکس داره این را بصورت یک برنامه اجرایی بخوام ارسال کنم چه باید انجامم بدم دوتا فایل بعد از build یکی بدون پسوند و دیگری با پسوند .o هست هر کدوم هم میزنی روشون اجرا نمیشن منظور من همان فایل exe که در ویندوز برنامه turbo c میسازه و به هرکی بدی اجرا میشه معادل اون در اوبونتو چیه و باید چه کرد ؟

یا علی.

آفلاین z.k

  • Full Member
  • *
  • ارسال: 217
پاسخ به: مشکل در c
« پاسخ #6 : 11 فروردین 1388، 10:23 ب‌ظ »
برای اینکه بتونید خروجی برنامه رو ببینید در c++ آخر کدتون بذارید  cin>>ch
و char ch رو هم تعریف کنید، این جوری برای خروج از برنامه باید یک کلید را فشار بدین.
تو c هم میتونید از scanf استفاده کنید.
clrscr هم داره !

آفلاین Aref

  • Full Member
  • *
  • ارسال: 116
  • جنسیت : پسر
  • شهید پرفسور مجید شهریاری
پاسخ به: مشکل در c
« پاسخ #7 : 11 فروردین 1388، 11:12 ب‌ظ »
با سلام
یه جستجو در همین forum راه حل‌هایی رو نشون می داد:
http://forum.ubuntu.ir/index.php/topic,2921.0.html
http://forum.ubuntu.ir/index.php/topic,7843.0.html
http://forum.ubuntu.ir/index.php/topic,6265.0.html
و البته اینترنت ;)
اگر مشکل شما تنها بسته شدن پنجره خروجی است بهتره که بجای تابع getch() از getchar() که از کتابخانه‌های استاندارد C/C++ است استفاده کنید.
وقتی سورس برنامه رو با geany کامپایل می‌کنید (درصورتی که دستور کامپایل پیشفرض اون رو تغییر نداده باشید) فایلی با اسم سورس اصلی و پسوند .o ایجاد می‌شود. دستور Build سورس و کامپایل کرده و یک فایل اجرایی همانم با نام برنامه ولی بدون پسوند می‌سازد. دستور execute تنها فایل اجرای قبل را در ترمینال اجرا می‌کند.

برای اجرای فایل اجرایی درون ترمینال یه کاراکتر./ در ابتدای نام فایل اجرایی گذاشته و enter کنید. \\:D/
به عنوان مثال برای فایل اجرایی test در ترمینال بنویسید:
./testموفق باشید. \\:D/

آفلاین رجبی

  • Full Member
  • *
  • ارسال: 156
  • جنسیت : پسر
    • پایگاه شخصی علی رجبی
پاسخ به: مشکل در c
« پاسخ #8 : 12 فروردین 1388، 12:45 ق‌ظ »
سلام ممنون در ترمینال را میدانم اما برای محیط گرافیکی چه کاری باید کرد که اجرا شه ؟

این system(clear) , system (reset)

در ویندوز کار میکنه و همین طور getchar() ?

آفلاین z.k

  • Full Member
  • *
  • ارسال: 217
پاسخ به: مشکل در c
« پاسخ #9 : 12 فروردین 1388، 11:44 ق‌ظ »
برای خواندن یک کلید از صفحه کلید در لینوکس باید از kbhit استفاده کنید.

آفلاین farbod69

  • Newbie
  • *
  • ارسال: 9
پاسخ به: مشکل در c
« پاسخ #10 : 20 تیر 1388، 10:15 ق‌ظ »
یادتون باشه دوست عزیز C++ ویندوز استاندارد نیست ولی مال لینوکس هست یعنی header های مثل conio یا windows.h و امثال آنها مال ویندوزه و در لینوکس کارایی نداره به همین دلیل getchar() کار نمیده ولی دستور system(char * command) که مال stdio.h هست در اینجا هم کار میکنه .

آفلاین someonenew

  • Jr. Member
  • *
  • ارسال: 31
  • جنسیت : پسر
پاسخ به: مشکل در c
« پاسخ #11 : 27 تیر 1388، 11:39 ب‌ظ »
سلام من کد زیر را نوشتم اما فقط scanf اول را میخواند اما چند بار هم که compile , build یا با gedit ذخیره میکنم درست کار میکنه مشکل از چیه ؟
من از geary , gcc, استفاده میکنم البته g++, bulid-esstrial هم دارم


#include <stdio.h>

int  main ()
{
//My variable
char name;
int a,b,c,sum,z;

printf("Please enter your name :\n");
scanf("%c",&name);
printf("Please enter 3 number :\n");
scanf("%d %d %d",&a,&b,&c);
sum=a+b+c;
z=a*b*c;
printf("Hey %c \n result:\n sum= %d zarb =%d",name,sum,z);
scanf("%d",&a);
return 0;
}


البته این قسمت را هم به این شکل هم نوشتم

scanf("%d%d%d",&a,&b,&c);
؟؟؟؟؟؟ ::)


یا علی

این پست قدیمیه ولی برای استفاده کسانی که احتمالا به این پست بر بخورن می نویسم، برنامه ای که اشاره کردین یه اشتباه مخفی داره! شما از کاربر می خواهید که یک اسم وارد کنه که در واقع یک رشته  (string) است، ولی با scanf فقط یک کاراکتر اول اون رو می خونید! در نتیجه چندین کاراکتر تو بافر ورودی سیستم باقی می مونه که در scanf های بعدی بدون اینکه شما چیزی وارد کنید اونها رو می خونه! بهترین راه اینه برای گرفتن یک رشته کامل از gets() استفاده کنید.