PDA

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



Eng_hamed
چهارشنبه 16 آذر 1390, 12:23 عصر
در زبان c برای گرفتن داده از ورودی استاندارد تا زمانی که پایان داده ها توسط کاربر اعلام بشه به این طریق عمل می کردیم:

while(scanf("%d", &b) !=EOF)

حالا در زبان C++‎‎ وقتی این کد را به صورت زیر می نویسم غلط می گیرد:

while(cin>>b !=EOF)

البته وقتی این جوری می نویسم بعد از زدن Ctrl+Z بقیه دستورات را اجرا نمی کند:

while(cin>>b)





این دستور را باید چه جوری بنویسم

hajizadeh.m
چهارشنبه 16 آذر 1390, 12:38 عصر
سلام
میتونی با توابعی مثل getchar کار کنی که تا یه space نیفتاده داده رو میگیره

Eng_hamed
چهارشنبه 16 آذر 1390, 12:50 عصر
سلام
میتونی با توابعی مثل getchar کار کنی که تا یه space نیفتاده داده رو میگیره

قضیه اینه که می خوام اطلاعات دانشجویان( شماره دانشجویی،نمره میان ترم و ....) را از کاربر بگیرم بعد برای هر دانشجو یه سری عملیات انجام میشه و پایان یافتن اطلاعات دانشجویان توسط کاربر اعلام میشه
دستور رو به صورت زیر نوشتم ولی غلط می گیره:
while(cin>>un>>n>>f>>h>>m>>e>>p !=EOF

BeginnerProgrammer
چهارشنبه 16 آذر 1390, 13:02 عصر
eof همون Ctrl+z میشه !
کاربر چطور اعلام میکنه وارد کردن داده تموم شده؟؟

hajizadeh.m
چهارشنبه 16 آذر 1390, 14:03 عصر
حالا نمیدونم اصراری داری که اینجوری کد رو بنویسی یا نه اما چیزی که خیلی راحته به نظرم اینه که یه حلقه while بذاری که تا زمانی که کاربر مثلا عدد 0 رو وارد نکرده اطلاعات را دریافت کنه.اینجوری شرط حلقه ساده تره و خطا هم نمیده.

Eng_hamed
چهارشنبه 16 آذر 1390, 15:05 عصر
eof همون Ctrl+z میشه !
کاربر چطور اعلام میکنه وارد کردن داده تموم شده؟؟
وقتی کاربر کلید ctrl+z رو فشار میده یعنی دیگه دادهای وارد نمیکنه و برنامه از حلقه میاد بیرون!!

Eng_hamed
چهارشنبه 16 آذر 1390, 15:07 عصر
حالا نمیدونم اصراری داری که اینجوری کد رو بنویسی یا نه اما چیزی که خیلی راحته به نظرم اینه که یه حلقه while بذاری که تا زمانی که کاربر مثلا عدد 0 رو وارد نکرده اطلاعات را دریافت کنه.اینجوری شرط حلقه ساده تره و خطا هم نمیده.

اینجوری هم میشه!
الان اومدم ورودی را به صورت scanf گرفتم!غلط نمیگیره!!