Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: cho hỏi cách làm một mảng có độ dài bất kỳ

  1. #1
    Ngày gia nhập
    09 2008
    Bài viết
    5

    Smile cho hỏi cách làm một mảng có độ dài bất kỳ

    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...

  2. #2
    Ngày gia nhập
    04 2008
    Nơi ở
    Bốn bề là nhà
    Bài viết
    703

    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);

  3. #3
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    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à)
    - Bạn có thể khai báo một con trỏ kiểu char ,
    - 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.

  4. #4
    Ngày gia nhập
    02 2008
    Bài viết
    1,009

    Bạn có thể khai báo một con trỏ kiểu char ,
    để 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 đâu
    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];

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3. #include <algorithm>
    4.  
    5. char* getCharArray( int& ary_size )
    6. {
    7.     std::string s;
    8.     std::getline( std::cin, s );
    9.     ary_size = s.length();
    10.     char* p = new char[ ary_size ];
    11.  
    12.     std::copy( s.begin(), s.end(), p );
    13.  
    14.     p[ ary_size ] = '\0';
    15.     return p;
    16. }
    17.  
    18. int main()
    19. {
    20.     char* s;
    21.     int   size_of_s;
    22.  
    23.     s = getCharArray( size_of_s );
    24.  
    25.     std::cout << s << '\n';
    26.  
    27.     return 0;
    28. }

    Đừng bao giờ dùng flush( stdin ) trong C++. Google để tìm lý do
    C++ Code:
    1. #include <iostream>
    2. #include <string>
    3. #include <numeric>
    4.  
    5. int main()
    6. {
    7.     int N;
    8.  
    9.     std::cin >> N;
    10.  
    11.     std::cin.ignore( std::numeric_limits< std::streamsize >::max(), '\n' );
    12.     std::string S;
    13.     std::getline( std::cin, S );
    14.  
    15.     std::cout << N << "\\" << S << '\n';
    16.  
    17.  
    18.     return 0;
    19. }

  6. #6
    Ngày gia nhập
    09 2008
    Bài viết
    5

    Mặc định cho hỏi cách làm một mảng có độ dài bất kỳ

    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...

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn