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

Đề tài: Lập trình chuỗi trong C | Làm sao nhập một chuỗi có độ dài bất kỳ???

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    4

    Wink Lập trình chuỗi trong C | Làm sao nhập một chuỗi có độ dài bất kỳ???

    Em gặp vấn đề trong lập trình về chuỗi ký tự.
    Em muốn nhập 1 chuỗi có độ dài bất kì, trong khi đó hàm nhập của thư viện string , gets, thì chỉ nhập dc 256 ký tự. Vậy thì em làm sao. Mong các anh chỉ dùm em

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    /root
    Bài viết
    318

    cậu sử dụng getline .
    What you see is never what you get...

  3. #3
    Ngày gia nhập
    09 2010
    Bài viết
    15

    Em dùng hàm getline như vầy nhưng em đâu thấy nó lấy phần tử lớn hơn kích thước mảng đâu?
    Code:
    #include <iostream>
    #include <conio.h> 
    using namespace std;
    
    void main()
    {
      char a[30],b[5],c[50];
      cout<<"\nHo ten: ";
      cin.getline(a,31);
      cout<<"\n Gioi tinh: ";
      cin.getline(b,7);
      cout<<"\nDia chi: ";
      cin.getline(c,51);
      cout<<"\n"<<a<<"   "<<b<<"  "<<c;
     
     getch();
    }
    Vậy nếu muốn lấy tất cả các phần tử nhập vào không phụ thuộc vào kích thước mảng ban đầu thì dùng hàm gì vậy anh?

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

    Hi there,

    Ý của void_main() là bạn dùng getline( cin, std::string ) chứ không phải char*. Bạn có thể Hhoặc là viết lại, hai là dùng C++ string. Ví dụ:

    C++ Code:
    1. #include <cstdio>
    2. #include <cstdlib>
    3. #include <cstring>
    4. #include <iostream>
    5. #include <string>
    6.  
    7. void getstr_implement( char** str, unsigned len ) {
    8.     char c;
    9.     size_t i = 0;
    10.     while( true ) {
    11.         c = getchar(); // get a character from keyboard
    12.         if( '\n' == c || EOF == c ) { // if encountering 'enter' or 'eof'
    13.             *( *str + i ) = '\0'; // put the null terminate
    14.             break; // done input end while
    15.         }
    16.         *( *str + i ) = c;
    17.         if( i == len - 1 ) { // buffer full
    18.             len = len + len; // double the len
    19.             *str = ( char* )realloc( *str, len ); // reallocate memory
    20.         }
    21.         ++i;
    22.     }
    23. }
    24.  
    25. char* getstr( char* str, unsigned len ) {
    26.     getstr_implement( &str, len );
    27.     return str;
    28. }
    29.  
    30. int main() {
    31.     const unsigned DEFAULT_SIZE = 4;
    32.     char* str = ( char* )malloc( DEFAULT_SIZE * sizeof( char ) );
    33.     str = getstr( str, DEFAULT_SIZE );
    34.     printf( "%s\n", str );
    35.     free( str );
    36.    
    37.     // or C++ string
    38.     std::string cpp_string;
    39.     getline( std::cin, cpp_string );
    40.     std::cout << cpp_string << "\n";
    41.  
    42.     return 0;
    43. }

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

    Cảm ơn anh nhiều.

Các đề tài tương tự

  1. Bị lỗi dính chuỗi khi nhập xuất chuỗi từ file trong C++?
    Gửi bởi nguyenchikhang trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 3
    Bài viết cuối: 03-11-2011, 03:13 PM
  2. Trả lời: 1
    Bài viết cuối: 29-06-2011, 12:02 AM
  3. Turbo C Lỗi Nhập một chuỗi và 1 từ cho biết từ đó xuất hiện trong chuỗi bao nhiêu lần?
    Gửi bởi vietvinhqn1992 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 17-01-2011, 12:38 PM
  4. Kỹ thuật C++ Các quy tắc nhập chuỗi trong C++, làm thế nào để nhập chuỗi có khoảng trắng?
    Gửi bởi quyen1991 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 20-11-2010, 03:36 PM
  5. Bài tập C tối ưu hóa chuỗi nhập từ bàn phím(xóa ký tự trắng thừa trong chuỗi)
    Gửi bởi kitti trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 27-10-2010, 07:11 PM

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