PDA

View Full Version : پایان دادن به رشته!



sajjadrad
سه شنبه 04 خرداد 1389, 18:20 عصر
سلام من تو یه کتاب خوندم که کاراکتر نول

\0
اگه تو هر خونه آرایه رشته باشه رشته اونجا تموم میشه.من یه تابع نوشتم که تا وقتی که کاراکتر '?' در پایان جمله ذکر نشده به خوندن آرایه ادامه میده.من میخوام وقتی اون کلمه کمتر از تعداد خونه های آرایه بود خونه های بعد از اون همه تهی بشن.

توی تابع زیر من یه آرایه 10 خونه ای تعریف کردم .فرض کنیم برای ورودی مقدار sajjad? وارد بشه.مشکل اینجاست که تابع 2 کاراکتر آخر رو زباله چاپ میکنه...
6 کاراکتر sajjad و یک کاراکتر ? و یه خونه هم نول...نمیدونم چرا بعد نول رو بازم میخونه....مشکل از کجاست؟



void read(char a[])
{
for (int i=0;i<10;i++)
{
cin>>a[i];
if (a[i]=='?')
{
a[i+1]='\0';
break;
}
}
}

silver2000
سه شنبه 04 خرداد 1389, 20:29 عصر
شما داری یه رشته 10تایی رو میخونی و بعد تازه مقایسه انجام میدی که آیا بعد از 10 تا به بعد آیا مقدار رشته ؟هست یا نه برای همین از رشته میزنه بیرون و برات زباله چاپ میکنه

tdkhakpur
سه شنبه 04 خرداد 1389, 20:35 عصر
فقط مواظب باشید که یک فضای اضافی برای قرار دادن مقدار تهی آخر رشته قرار داده باشید.


a[i+1]=0;

sajjadrad
سه شنبه 04 خرداد 1389, 22:59 عصر
ببینید فرض کنید من یه سوال رو برای ورودی گرفتم.آخرش علامت سوال داره پس خوندن رشته ها تموم میشه..میخوام یه خونه بعد از علامت سوال دیگه پایان آرایه باشه...اما این اتفاق نمیوفته و مجبورم یه حلقه دیگه بذارم که تک تک خونه های بعد علامت سوال رو تهی کنه....