انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: amin-asa در 18 آذر 1392، 12:32 قظ
-
سلام دوستان
موقع اجرا این برنامه وقتی که از من ورودی می خواد من یک رشته که ۱۰ کاراکتر داشته باشه رو وارد میکنم حلقه یکبار اجرا میشه و ۷ کاراکتر رو چاپ میکنه اما بار بعد از حلقه خارج میشه. متغیر ما که ۸۰ کاراکتر جا داره پس چرا این اتفاق میفته؟
#include <iostream>
using namespace std;
int main() {
char line[80];
do {
cin.getline(line, 8);
if (*line)
cout << "\t[" << line << "]\n";
} while (*line);
cout << endl;
return 0;
} // end of main function
-
cin.getline(line, 8);
cin.getline(line, 81);
-
تو عنوانت بنویس c++ :)
-
cin.getline(line, 8);
cin.getline(line, 81);
ممنون. این رو میدونستم. البته بجای ۸۱ باید ۸۰ بنویسم.
چرا وقتی ۸ باشه درست کار نمیکنه؟
-
بهتر بود عنوان رو فارسی انتخاب میکردی :D
-
بهتر بود عنوان رو فارسی انتخاب میکردی :D
ضد حال بهتر از این نمیشه :)
حالا جواب سوال چیه؟
-
http://www.cplusplus.com/reference/istream/istream/getline/ (http://www.cplusplus.com/reference/istream/istream/getline/)
The delimiting character is the newline character ('\n') for the first form, and delim for the second: when found in the input sequence, it is extracted from the input sequence, but discarded and not written to s.
-
آقا من اصلا نفهمیدم شما با این کد میخوای چیکار کنی، ولی چیزی که احساس کردم کد رو اینجوری تغییر دادم:
#include <iostream>
using namespace std;
int main() {
char line[80];
int i =0;
cin.getline(line, 20);
while (*(line+i) != '~')
{
if (*(line+i) != '\0')
{ cout <<i <<" = [" << *(line+i) << "] ";
}
else
{ cout<<"\n";
cin.getline(line, 20);
i=-1;
}
i++;
}
cout << endl;
return 0;
} // end of main function
--------
ویرایش: یک cout رو تغییر دادم.
-
آقا من اصلا نفهمیدم شما با این کد میخوای چیکار کنی
هدف من هم اینه:
من میخوام این برنامه در هر بار اجرا چند کاراکتر رو از یوزر بگیره و فقط ۷ کاراکتر اول رو چاپ کنه. ولی با این کدی که من دارم حلقه فقط یکبار اجرا مشه. چه بلای سرش میاد نمیدونم.
-
http://www.cplusplus.com/reference/istream/istream/getline/ (http://www.cplusplus.com/reference/istream/istream/getline/)
The delimiting character is the newline character ('\n') for the first form, and delim for the second: when found in the input sequence, it is extracted from the input sequence, but discarded and not written to s.
یعنی چون \n
رو توی ۸ کاراکتر اول پیدا نمیکنه برنامه درست کار نمیکنه؟
-
هدف من هم اینه:
من میخوام این برنامه در هر بار اجرا چند کاراکتر رو از یوزر بگیره و فقط ۷ کاراکتر اول رو چاپ کنه. ولی با این کدی که من دارم حلقه فقط یکبار اجرا مشه. چه بلای سرش میاد نمیدونم.
حدس منم همین بود این کد که برای شما تغییر دادم تقریبا همینه منتها یک سری جاهاشو باید تغییر بدین، فکر کنم اون if داخلی باید تغییر کنه چون اون null ، آخر رشته رو به شما میده ولی برای نمایش 7 کاراکتر اول شما میتونین به جای اون یک شرط برای i بزارین که کوچکتر از 7 باشه.
لازم هم نبود حتما از پوینتر استفاده کنین، جاهایی که مشابه این کد هست:*(line+i)
رو میتونین با عضوهای آرایه عوض کنین:line[i]
-
هدف من هم اینه:
من میخوام این برنامه در هر بار اجرا چند کاراکتر رو از یوزر بگیره و فقط ۷ کاراکتر اول رو چاپ کنه. ولی با این کدی که من دارم حلقه فقط یکبار اجرا مشه. چه بلای سرش میاد نمیدونم.
حدس منم همین بود این کد که برای شما تغییر دادم تقریبا همینه منتها یک سری جاهاشو باید تغییر بدین، فکر کنم اون if داخلی باید تغییر کنه چون اون null ، آخر رشته رو به شما میده ولی برای نمایش 7 کاراکتر اول شما میتونین به جای اون یک شرط برای i بزارین که کوچکتر از 7 باشه.
لازم هم نبود حتما از پوینتر استفاده کنین، جاهایی که مشابه این کد هست:*(line+i)
رو میتونین با عضوهای آرایه عوض کنین:line[i]
ممنون. منم همین کاری که گفتی رو انجام می دم ببینم به نتیجه میرسم یا نه.
راستی این حرفی که من زدم درست بود یا نه:
http://www.cplusplus.com/reference/istream/istream/getline/ (http://www.cplusplus.com/reference/istream/istream/getline/)
The delimiting character is the newline character ('\n') for the first form, and delim for the second: when found in the input sequence, it is extracted from the input sequence, but discarded and not written to s.
یعنی چون \n
رو توی ۸ کاراکتر اول پیدا نمیکنه برنامه درست کار نمیکنه؟
-
ممنون. منم همین کاری که گفتی رو انجام می دم ببینم به نتیجه میرسم یا نه.
راستی این حرفی که من زدم درست بود یا نه:
http://www.cplusplus.com/reference/istream/istream/getline/ (http://www.cplusplus.com/reference/istream/istream/getline/)
The delimiting character is the newline character ('\n') for the first form, and delim for the second: when found in the input sequence, it is extracted from the input sequence, but discarded and not written to s.
یعنی چون \n
رو توی ۸ کاراکتر اول پیدا نمیکنه برنامه درست کار نمیکنه؟
خواهش میکنم، بله همینطورِ که شما تفسیر کردین.