PDA

View Full Version : طول آرایه ای از کاراکترها



fshb_ 1370
یک شنبه 25 بهمن 1388, 09:29 صبح
وقتی من یه آرایه از کاراکترها تعریف میکنم، و اون آرایه رو از کاربر دریافت میکنم،به طول آرایه ورودی حساس نیست و اگر طول آرایه دریافتی بیشتر از طول موردنظر باشه، error نمیگیره.
دلیلش چیه؟؟
مثل کد زیر:


#include<iostream>
using namespace std;
void main()
{
char string1[10];
cin>>string1;//string1="microsoftvisualstadio"
cout<<string1;
int a;
cin>>a;
cout<<a;
}

ali zi zeperto
یک شنبه 25 بهمن 1388, 09:44 صبح
وقتی من یه آرایه از کاراکترها تعریف میکنم، و اون آرایه رو از کاربر دریافت میکنم،به طول آرایه ورودی حساس نیست و اگر طول آرایه دریافتی بیشتر از طول موردنظر باشه، error نمیگیره.
دلیلش چیه؟؟
مثل کد زیر:


#include<iostream>
using namespace std;
void main()
{
char string1[10];
cin>>string1;//string1="microsoftvisualstadio"
cout<<string1;
int a;
cin>>a;
cout<<a;
}

خوب معلومه چرا.چون C++‎‎ به طول آرایه ها کنترل اجباری نداره و شما می تونی به خارج از خونه های آرایه هم ایندکس کنی.خودت باید مکانیزم ورودی رو کنترل کنی.
از دستور cin.get یا cin.getlineاستفاده کن

Altech
یک شنبه 25 بهمن 1388, 19:41 عصر
ali zi zeperto راس میگه .
آخه وقتی تو ++C این کتابخانه string با این گستردگی وجود داره شما چرا دوباره از * char استفاده می کنین ؟
اصلا این آرایه ++C امن و درست نیست . خود بیارنه هم به این موضوع اشاره کرده . تا جایی که می تونین از STL بهره ببرین .

fshb_ 1370
یک شنبه 25 بهمن 1388, 19:50 عصر
ali zi zeperto راس میگه .
آخه وقتی تو ++C این کتابخانه string با این گستردگی وجود داره شما چرا دوباره از * char استفاده می کنین ؟
اصلا این آرایه ++C امن و درست نیست . خود بیارنه هم به این موضوع اشاره کرده . تا جایی که می تونین از STL بهره ببرین .
این یکی از تمرینای کتاب c++ how to program بود و باید با آرایه کار میکردم، وگرنه حرف شما درسته.
ممنون