Hàm cho phép nhập chuỗi ký tự từ bàn phím
Hàm getline Show
Đối với C++ : getline(std::cin,
###C
15 Likes
Hay á.Đúng cái đang cần.Mình đang tính chạy thử so sánh hàm getline với hàm gets nhưng tắm cái đã. ^^! Thanks bạn
Lang_Khach:
nếu thấy hay thì cùng tạo ra nhiều thư viện nhỏ như này đi heng. hỳ hỳ! welcome!!! 2 Likes
không nhầm thì hàm getline làm việc với biến kiểu string, còn gets làm việc với biến kiểu con trỏ hoặc mảng ký tự, đúng k nhỉ ? 1 Like
TTmagic:
wiki lên có thể sửa nhé ! hỳ hỳ mọi người cùng hoàn thiện mà
câu hỏi và câu trả lời không liên quan =))
TTmagic:
thấy sai hay thiếu xót thì mọi ng có quyền sửa nhé đâu ai nỡ thấy sai mà để vậy coi sao được
Thank bạn đã chia sẽ nhé
mọi người ơi, sao em dùng hàm cin.getline toàn bị lỗi ấy, ngẫm nghĩ 1 ngày rồi mà ko ra vấn đề , mn chỉ em, em dùng visual studio em cảm ơn
@Honey_moon giúp em với
cin.getline sao lại đọc vào biến x kiểu int. cin.getline( char* , int size ) chứ 1 Like
woah, mình muốn hiển thị kết quả ra theo kiểu | “stt” | “soluong” | “đơn giá” | thành tiền " | theo kiểu danh sách ấy. nếu dùng kiểu khác int thì mình ko biết dùng kiểu dữ liệu gì để có thể dùng phép tính " x.thanhtien=x.dongia*x.soluong; " help me!
Nhập dữ liệu cho biến int thì dùng cin chứ. cin>>x.stt , mà sao có 1 biến struct x mà lai dùng for nhỉ 1 Like
biến đó dùng để gọi các biến trong struct mà, nếu dùng thằng cin thì cái bảng kết quả của mình nó chỉ hiển thị 1 list toàn giá trị của mặt hàng nhập cuối cùng thôi,
thank bạn @sanegan199x nhá , hehe, mình đã hiểu ra và sửa thành công
có bạn nào chỉ mình cách chiaw class trong dev c++ ko
hai cái xóa bộ nhớ đệm là fflush(stdin); và cin.ignore(); giống và khác nhau như thế nào nhỉ? vì mình để fflush(stdin); thì nó trôi lệnh không getline được, nhưng thay bằng cin.ignore(); thì lại có thể getline được !??
congtuyen7:
cin.ignore() là chuẩn (lưu ý: viết ntn không triệt để), còn fflush(stdin) không phải chuẩn, và đã bị rút bỏ khỏi VS 2015 trở về sau. 2 Likes
đúng rồi ạ! e đang dùng VS 2017 fflush(stdin) không thể dùng được.
vậy làm sao để nhập số sau khi nhập chuỗi ạ? next page → Home Categories FAQ/Guidelines Terms of Service Privacy Policy
Trong ngôn ngữ lập trình C không có kiểu dữ liệu chuỗi mà chuỗi trong C là một dãy các kí tự kiểu char. Một chuỗi trong C được đánh dấu kết thúc là ‘\0’ (còn gọi là ký tự NULL trong bảng mã ASCII) và có độ dài tùy ý, điều này cũng có nghĩa chuỗi ký tự trong C là một mảng các ký tự char. Các Biến Chuỗi
Khai báoKhai báo theo mảngCú pháp: char Ví dụ: Trong chương trình, ta có khai báo: char Ten[12]; Trong khai báo này, bộ nhớ sẽ cung cấp 12+1 bytes để lưu trữ nội dung của chuỗi ký tự Ten; byte cuối cùng lưu trữ ký tự ‘\0’ để chấm dứt chuỗi. Lưu ý:
Khai báo theo con trỏ Cú phápchar * Ví dụ: Trong chương trình, ta có khai báo: char *Ten; Trong khai báo này, bộ nhớ sẽ dành 2 byte để lưu trữ địa chỉ của biến con trỏ Ten đang chỉ đến, chưa cung cấp nơi để lưu trữ dữ liệu. Muốn có chỗ để lưu trữ dữ liệu, ta phải gọi đến hàm malloc() hoặc calloc() có trong “alloc.h”, sau đó mới gán dữ liệu cho biến. Vừa khai báo vừa gán giá trịCú pháp: char Ví dụ: #includeLưu ý: Chuỗi được khai báo là một mảng các ký tự nên các thao tác trên mảng có thể áp dụng đối với chuỗi ký tự. Không thể cộng, trừ, nhân, chia 2 chuỗi kí tự lại bằng phép toán đơn thuần. Tất cả những điều đó phải được làm bằng các hàm riêng lẽ. Ta có thể gán một chuỗi này bằng một chuỗi khác (strcpy), so sánh 2 chuỗi kí tự với nhau theo thứ tự từ điển (strcmp), cộng 2 chuỗi với nhau (strcat),… Mọi hằng chuỗi đều được ngôn ngữ lập trình C lưu trữ như là một mảng các char và kết thúc bằng kí tự “\0”. Hơn nữa, một chuỗi trong chương trình chúng ta chỉ nhận được địa chỉ và chỉ đến đầu mảng lưu trữ. Việc truy xuất đến một hằng chuỗi đều được thực hiện qua một pointer chỉ đến mảng đó. Hàm nhập xuất một chuỗiNhập chuỗi từ bàn phímĐể nhập một chuỗi ký tự từ bàn phím, ta sử dụng hàm gets() Cú pháp: gets( Ví dụ: char Ten[20]; gets(Ten); Ta cũng có thể sử dụng hàm scanf() để nhập dữ liệu cho biến chuỗi, tuy nhiên lúc này ta chỉ có thể nhập được một chuỗi không có dấu khoảng trắng. Ngoài ra, hàm cgets() (trong conio.h) cũng được sử dụng để nhập chuỗi. #includeKết quả thực hiện chương trình: Lưu ý: Nếu dùng hàm scanf() để nhập dữ liệu và kết thúc việc nhập dữ liệu bằng phím Enter, thì lúc này phím Enter sẽ cho hai kí tự có mã ASCII là 13 và 10 trong vùng đệm. Như vậy nếu dùng hàm scanf() thì kí tự có mã ASCII 10 vẫn còn nằm trong vùng đệm. Nếu ta dùng hàm gets(chuỗi s), kí tự có mã ASCII là 10 được chuyển ngay vào chuỗi s. Tức là hàm gets sẽ lấy tất cả các ký tự trong buffer (vùng đệm) của màn hình vô chuỗi cho nên đôi khi chúng ta sẽ nhận được chuỗi không mong muốn do gets nhận những ký tự dư của các hàm nhập khác. Để tránh điều này ta dùng hàm int flushall(void) để xóa mọi buffer (vùng đệm) hoặc hàm fflush(stdin) để xóa vùng đệm bàn phím trước hàm nhập chuỗi gets (chuỗi s). #includeKết quả thực thi của chương trình:
Nhập chuỗi kết thúc bằng phím Enter : char*gets(char*s); Xuất chuỗi lên màn hìnhĐể xuất một chuỗi (biểu thức chuỗi) lên màn hình, ta sử dụng hàm puts(). Cú pháp: puts( Ví dụ: Nhập vào một chuỗi và hiển thị trên màn hình chuỗi vừa nhập. #includeXuất một chuỗi có xuống dòng sau khi xuất: int put(const char*s); int printf(“%s\n”,s); Xuất một chuỗi không xuống dòng sau khi xuất: int printf(“%s”,s); int printf(s); |