• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

چرا با زدن enter دریافت ورودی قطع نمیشه؟

fshb

Registered User
تاریخ عضویت
18 سپتامبر 2009
نوشته‌ها
546
لایک‌ها
31
محل سکونت
Cambridge :)
سلام دوستان
من میخوام با زدن enter برنامه دیگه ورودی دریافت نکنه، کد زیر رو نوشتم، ولی کاری که من میخوام انجام نمیده و با زدن enter باز هم به دریافت ورودی ادامه میده.
PHP:
#include<iostream>
using namespace std;
const int SLEN = 30;
const int Size=10;
struct student 
{
char fullname[SLEN];
char hobby[SLEN];
int ooplevel; 
};
int getinfo(student pa[],int n);
int main()
{
student pa[Size];
int count=getinfo(pa,Size);
cout<<count;
}
int getinfo(student pa[],int n)
{
int i=0;
cout<<"enter students:\n";
cout<<"pa["<<i<<"].fullname:";
while((cin>>pa[i].fullname)!='\0')
{
cout<<"pa["<<i<<"].hobby:";
cin>>pa[i].hobby;
cout<<"pa["<<i<<"].ooplevel:";
cin>>pa[i].ooplevel;
i++;
cout<<"pa["<<i<<"].fullname:";
}
return i;
}

کجای کد من مشکل داره؟:(
 

NdR

Registered User
تاریخ عضویت
10 مارس 2004
نوشته‌ها
86
لایک‌ها
0
به جای شرط حلقه اینو بنویسید:
کد:
while(i < n)
و یه همچین سوال و جوابی رو به آخر حلقه اضافه کنید:
کد:
cout << "continue? (Y/N)\n";
string s;
cin >> s;
if (s != "Y" && s != "y") break;
تابع std::getline هم چیز خوبیه، خیلی جاها بیشتر از cin بدرد میخوره.
در ضمن چرا از std::vector و std::string استفاده نمی کنید؟

 
Last edited:

fshb

Registered User
تاریخ عضویت
18 سپتامبر 2009
نوشته‌ها
546
لایک‌ها
31
محل سکونت
Cambridge :)
به جای شرط حلقه اینو بنویسید:
کد:
while(i < n)
و یه همچین سوال و جوابی رو به آخر حلقه اضافه کنید:
کد:
cout << "continue? (Y/N)\n";
string s;
cin >> s;
if (s != "Y" && s != "y") break;
تابع std::getline هم چیز خوبیه، خیلی جاها بیشتر از cin بدرد میخوره.
در ضمن چرا از std::vector و std::string استفاده نمی کنید؟


دوست عزیز ممنون از راهنماییتون
ولی روش اول، اون چیزی نیست که منظور من هست. در واقع من میخوام در شرط حلقه while یک جمله ای نوشته بشه که تابع در همون جا وارد کردن enter رو متوجه بشه.
روش دوم(استفاده از getline ) راه خوبی به نظر میرسه. ولی باز هم مشکل قبلی به وجود میاد و برنامه زدن enter رو متوجه نمیشه.
PHP:
	while((cin.getline(pa[i].fullname,SLEN)!="\n"))
این کد استفاده از getline هست.

یه سوال دیگه: برای اینکه بگم اگر enter زده شد ..... باید از علامت "\0" استفاده کرد یا از علامت "\n"؟؟؟:wacko:
فک کنم علامت رو هم اشتباه گذاشتم.:(
 

NdR

Registered User
تاریخ عضویت
10 مارس 2004
نوشته‌ها
86
لایک‌ها
0
مشکل اینجاست که چیزی که تابع getline و اپریتور << برمی گردونن اصلا رشته نیست که بخوایم با رشته دیگه مقایسشون کنیم.
فکر می کنم شما یه پیش زمینه ای از C داری، اگه می خوای برنامتو به ++C بنویسی، از روش های معمول این زبان استفاده کن.

کد:
std::string s; 
while (std::getline(std::cin, s))
{
    if (s.empty()) break;
}
 
بالا