PDA

View Full Version : سوال: گرفتن هوشمند آرایه از ورودی



Keyhan Clever
چهارشنبه 16 اردیبهشت 1388, 19:10 عصر
چجوری میشه که کاربر یه جمله بنویسه (بینش اینتر و فاصله نزنه) و بعدش هم که تموم شد اینتر کنه .
حالا که این کارا رو کرده چجوری کامپیوتر طول رشتشو حساب میکنه ؟

SamaPic
چهارشنبه 16 اردیبهشت 1388, 21:02 عصر
با سلام.
اگر در یک string گذاشتی ، دستور زیر طول آن را بر می گرداند:



.size() نام متغییر

اگ در یک (آرایه ی ) char گذاشتی دستور زیر طول رشته را بر می گرداند.



strlen( نام متغییر );

خدانگهدار.

Keyhan Clever
چهارشنبه 16 اردیبهشت 1388, 21:30 عصر
با سلام.
اگر در یک string گذاشتی ، دستور زیر طول آن را بر می گرداند:



.size() نام متغییر

اگ در یک (آرایه ی ) char گذاشتی دستور زیر طول رشته را بر می گرداند.



strlen( نام متغییر );

خدانگهدار.


خوب حالا اگر در یک آرایه باشه مثلا یک آرایه 20 عضوی و کاربر فقط 3 عضوشو وارد کنه اون وقت strlen عدد 3 رو بر میگردونه ؟

Nima_NF
چهارشنبه 16 اردیبهشت 1388, 21:45 عصر
خوب حالا اگر در یک آرایه باشه مثلا یک آرایه 20 عضوی و کاربر فقط 3 عضوشو وارد کنه اون وقت strlen عدد 3 رو بر میگردونه ؟
رشته ای که در strlen وارد می کنیم تا طول آن را برگرداند باید Null-terminated باشد یعنی انتهای آن NULL یا همان کارکتر 0\ قرار داشته باشد. اگر آرایه ای از کارکترها را با رشته ای مقدار دهی کرده باشید به طور خودکار این NULL بعد از آخرین کارکتر در داخل آرایه قرار می گیرد.

پس بله، تعداد کارکترها را بر می گرداند، بدون توجه به طول اولیه آرایه.

SamaPic
چهارشنبه 16 اردیبهشت 1388, 21:49 عصر
بله.آن طور که یادم است همین دستور است .حالا اگر یکی بیشتر را برگرداند نال را به حساب آورده است.و شما آن را منهای یک کن.
دلیل شکم در این است که مدت زیادی (حدود 6 ماه ) است که از این تابع استفاده نکردم.
ولی در مورد string ها و دستور ی که گفتم ، نال را هم به حساب می آورد.بنابراین باید منهای یک کرد.
ولی فکر کنم در strlen نال را به حساب می آورد.بنابراین منهای یک کن.
خدانگهدار.