Câu hỏi trên của bạn mình cũng không hiểu lắm.còn để xóa được vùng đệm thì
dùng hàm fflush(stdin);
tui có một bài tập yêu cầu như sau:
nhập từ bàn phím một chuỗi có độ dài bất kỳ đến khi enter thì ngừng, sau đó gán lại vô trong một mảng kiểu char đúng độ dài đó (ko xài mảng phụ)
cho hỏi thêm một chút xíu, để xóa sạch vùng nhớ đệm trong C++ thì dùng hàm nào? (xóa sạch sẽ lun, dùng hàm cin.ignore thì nó chỉ xóa lắt nhắt so luong kí tự mình yêu cầu ko hà)
thax!
ko có việc gì khó, chỉ sợ... tiền ko nhiều...
Câu hỏi trên của bạn mình cũng không hiểu lắm.còn để xóa được vùng đệm thì
dùng hàm fflush(stdin);
- Bạn có thể khai báo một con trỏ kiểu char ,tui có một bài tập yêu cầu như sau:
nhập từ bàn phím một chuỗi có độ dài bất kỳ đến khi enter thì ngừng, sau đó gán lại vô trong một mảng kiểu char đúng độ dài đó (ko xài mảng phụ)
cho hỏi thêm một chút xíu, để xóa sạch vùng nhớ đệm trong C++ thì dùng hàm nào? (xóa sạch sẽ lun, dùng hàm cin.ignore thì nó chỉ xóa lắt nhắt so luong kí tự mình yêu cầu ko hà)
- Việc nhập chuỗi sẽ đưa vào vòng lặp khi enter thì kết thúc,
- Để lấy kí tự bạn dùng hàm getchar();
- Gán kí tự vào con trỏ đó theo vị trí i tăng dần, đồng thời cấp phát cho con trỏ.
- Kết thúc nhớ gán vị trí cuối của còn trỏ bằng '\0'
Bên C++ dùng cin.ignore(1) xóa một kí tự trong vùng nhớ đệm. Thêm vài tham số thì cin.ignore sẽ xóa được nhiều hơn, nhưng xóa hết thì mình không chắc.
để chu toàn thì tốt nhất là cậu không nên dùng phương pháp này đâu,nếu khai báo con trỏ kiểu này với cin.getline hoặc cin.get là nó không đồng ý,thứ 2 nữa là nếu khai báo kiểu này với thành phần private( thuộc tính của lớp ) thì chương trình sẽ báo lỗi không tìm thấy vùng nhớ của biến đâuBạn có thể khai báo một con trỏ kiểu char ,
với struct cũng vậy
với trường hợp này để mỹ mãn không phải debult bạn nên dùng cấp phát động cho chuỗi
Code:char *chuoi; chuoi = new char[ số phần tử cấp phát];
C++ Code:
#include <iostream> #include <string> #include <algorithm> char* getCharArray( int& ary_size ) { std::string s; ary_size = s.length(); char* p = new char[ ary_size ]; std::copy( s.begin(), s.end(), p ); p[ ary_size ] = '\0'; return p; } int main() { char* s; int size_of_s; s = getCharArray( size_of_s ); return 0; }
Đừng bao giờ dùng flush( stdin ) trong C++. Google để tìm lý do
hihihihihihi.....
thanks các pác nhìu! lại có thể mở mang thêm dc 1 chút!
ko có việc gì khó, chỉ sợ... tiền ko nhiều...