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

کمک و پشتیبانی => برنامه‌سازی => نویسنده: رجبی در 09 فروردین 1388، 07:51 ب‌ظ

عنوان: مشکل در 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);
؟؟؟؟؟؟ ::)


یا علی
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: z.k در 09 فروردین 1388، 09:59 ب‌ظ
سلام

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

gcc sample.c -o sample
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: Aref در 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/
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: رجبی در 10 فروردین 1388، 07:19 ب‌ظ
سلام ممنون متوجه مشکل شدم من کاراکتر پاسکال را با سی اشتباه گرفته بودم بجای یک حرف چند حرف میزدم مشکل از این بود .

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

یاعلی
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: z.k در 10 فروردین 1388، 08:58 ب‌ظ
debug کردن برنامه با c سخت نیست!
برای debug کردن میتونید از gdb استفاده کنید.
برای اینکار موقع کامپایل از سوییچ -g تو کاموایل استفاده کنید.
g++ sample.cpp -g -o sampleموقع اجرا :
gdb ./sampleبرای کار با gdb مطلب زیاد هست، یه search ساده میخواد.
عنوان: مشکل جدید در c
ارسال شده توسط: رجبی در 11 فروردین 1388، 08:08 ب‌ظ
سلام
من یک برنامه نوشتم مشکلی هم نداره اما ما چون در دانشگاه از turbo c++ یا borland turbo c++ استفاده میکنم

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

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

یا علی.
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: z.k در 11 فروردین 1388، 10:23 ب‌ظ
برای اینکه بتونید خروجی برنامه رو ببینید در c++ آخر کدتون بذارید  cin>>ch
و char ch رو هم تعریف کنید، این جوری برای خروج از برنامه باید یک کلید را فشار بدین.
تو c هم میتونید از scanf استفاده کنید.
clrscr هم داره !
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: Aref در 11 فروردین 1388، 11:12 ب‌ظ
با سلام
یه جستجو در همین forum راه حل‌هایی رو نشون می داد:
http://forum.ubuntu.ir/index.php/topic,2921.0.html (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,7843.0.html)
http://forum.ubuntu.ir/index.php/topic,6265.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/
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: رجبی در 12 فروردین 1388، 12:45 ق‌ظ
سلام ممنون در ترمینال را میدانم اما برای محیط گرافیکی چه کاری باید کرد که اجرا شه ؟

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

در ویندوز کار میکنه و همین طور getchar() ?
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: z.k در 12 فروردین 1388، 11:44 ق‌ظ
برای خواندن یک کلید از صفحه کلید در لینوکس باید از kbhit استفاده کنید.
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: farbod69 در 20 تیر 1388، 10:15 ق‌ظ
یادتون باشه دوست عزیز C++ ویندوز استاندارد نیست ولی مال لینوکس هست یعنی header های مثل conio یا windows.h و امثال آنها مال ویندوزه و در لینوکس کارایی نداره به همین دلیل getchar() کار نمیده ولی دستور system(char * command) که مال stdio.h هست در اینجا هم کار میکنه .
عنوان: پاسخ به: مشکل در c
ارسال شده توسط: someonenew در 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() استفاده کنید.