PDA

View Full Version : سوال: تشخیص میزان فضای خالی آرایه



hafez1
چهارشنبه 10 خرداد 1391, 15:01 عصر
اگه یه آرایه ای از نوع char داشته باشیم بخایم ببینیم چه قدرش خالیه چی کار می کنیم؟؟؟:متفکر:

jannatmakan
چهارشنبه 10 خرداد 1391, 16:33 عصر
با سلام.
همونطور که می دونید، وقتی ما یک آرایه از کاراکتر ها درست می کنیم، درواقع یک نوع رشته ای داریم که خونه های خالی اون از مقدار پیش فرض '\x0' رو می گیرند که به کاراکتر خالی بودن سلول های نوع char شهرت داره . و خالی بودن سلول های آرایه ی کاراکتری تون رو می تونید از روی همین '\x0' تشخیص بدین.
برای همین هم هست که می گن وقتی مثلاً آرایه ی کاراکتریتون 100 خونه داره ، شما باید فقط 99 تاش رو استفاده کنید. که اون '\x0' آخری از بین نره و آخر رشته مشخّص باشه.
اینم یک کد نمونه:



#include<iostream.h>
#include<conio.h>

int main()
{
int i=0;
char myarr[100];

cout<<"Please enter a text:\n";
cin>>myarr;

while(myarr[i]!='\x0')
{
i++;
}

cout<<"Empty Cells = "<<100-i;

getch();
return 0;
}

mehdi.mousavi
چهارشنبه 10 خرداد 1391, 17:23 عصر
سلام.
جدا از روشی که در فوق به اون اشاره شد، شما می تونید از strlen برای گرفتن طول رشته استفاده کنید. سپس، تعداد خونه های موجود آرایه رو از اون میزان کم کنید تا طول خونه های دست نخورده مشخص بشه:


char arr[100] = "TEST";
int unsued = sizeof(arr) / sizeof(arr[0]) - strlen(arr);


اگر در ویندوز این کارو انجام میدید، میتونید بدین شکل عمل کنید:

char arr[100] = "TEST";
int unsued = ARRAYSIZE(arr) - strlen(arr);

موفق باشید.

پاورقی: strlen هم همون کار Loop پاسخ قبلی رو انجام میده، یعنی تا وقتی به NULL نرسیده، تعداد Character ها رو براتون شمارش میکنه.