PDA

View Full Version : سوال در مورد char



ali.2566
جمعه 06 شهریور 1388, 02:32 صبح
سلام
دوستان اين تعريف متغير رو ببينيد:
char s[80]

اين 80 چيه اون بالا؟ ميشه كامل توضيح بديد؟ زياد ديدم اينطوري يه متغير تعريف بشه حالا با هر عدد ديگه اي
اگه امكانش هست در مورد ()itoa هم يه توضيح جامع بديد كه كامل كارش رو درك كنم
مثلا
itoa(i*j,s,10)


تشكر پيشاپيش

clover
جمعه 06 شهریور 1388, 02:50 صبح
char s[80];

این اعلان یک آرایه از نوع char با طول 80 هست که معمولا برای نگهداری یک رشته استفاده می شود .

تابع ()itoa کار تبدیل یک متغیر از نوع int به یک رشته را انجام می دهد . اعلان این تابع به صورت زیر است :

char *itoa(
int value,
char *str,
int radix
);

پارامتر ها :
value : عددی که می خواهیم تبدیل شود .
str : اشاره گری به محل ذخیره نتیجه ( رشته مورد نظر ) .
radix : مبنای تبدیل ( بین 2 تا 36 )

در مثال شما ابتدا یک آرایه از رشته ها تعریف شده :

char s[80];

بعد با استفاده از تابع ()itoa مقدار عبارت i*j محاسبه شده و در مبنای 10 به رشته تبدیل و نتیجه در آرایه s ذخیره می شود .


char s[80];
itoa(i*j, s, 10);

به قطعه کد زیر دقت کنید :

char buffer[65];
int r;
for( r=10; r>=2; --r )
{
itoa( -1, buffer, r ); // C4996
// Note: _itoa is deprecated; consider using _itoa_s instead
cout << "Base" << r << " : ";
cout << buffer << endl;
}

این قطعه کد عدد -1 را در پایه های 10 تا 2 تبدیل به رشته کرده و رشته مورد نظر را نمایش می دهد . خروجی قطعه کد به صورت زیر می باشد :

base 10: -1
base 9: 12068657453
base 8: 37777777777
base 7: 211301422353
base 6: 1550104015503
base 5: 32244002423140
base 4: 3333333333333333
base 3: 102002022201221111210
base 2: 11111111111111111111111111111111

ali.2566
جمعه 06 شهریور 1388, 02:57 صبح
ممنون ولي چرا 80 ؟‌ اگه طول قيد نشه چه فرقي ميكنه؟

clover
جمعه 06 شهریور 1388, 03:25 صبح
ممنون ولي چرا 80 ؟‌ اگه طول قيد نشه چه فرقي ميكنه؟

مثل اینه که شما به برنامه بگید من یه مقدار جا برای یه تعداد متغیر از نوع char نیاز دارم .
یا مثل این هست که شما از خودپرداز پول برداشت کنید بدون اینکه مقدار برداشت را تعیین کنید .
این اعلان یک آرایه در زبان C هست و باید طبق دستور زبان C انجام بشه . در مورد اینکه چرا 80 ؟ این بستگی به نیاز شما داره . توجه کنید که عدد 1- در مبنای 2 ، 32 رقم داره . حالا یه عدد بزرگتر را تصور کنید . پس بسته به نیاز باید طول آرایه را مشخص کنید .

ali.2566
جمعه 06 شهریور 1388, 03:58 صبح
ممنون دوست خوبم
توضيحاتتون عالي بود. متاسفانه كتاب جعفرنژاد قمي بسياري از موارد مهم رو توضيح نداده. مثلا اومده بدون توضيح از itoa استفاده كرده و به همين ترتيب بدون كوچكترين توضيح گفته char[80]
اين كتاب انتشارات نص رو هم كه پيدا نميكنيم. پس مجبوريم به شما خوبان زحمت بديم. در هر حال بازم متشكرم.