30/09/2018, 16:08
Cách dùng fgets thay vì dùng scanf để nhập vào chuỗi trong C
Từ bài @nhatlonggunz hỏi ở đây [Video] Ngôn Ngữ C - 24 - Hàm nhập vào từ bàn phím, scanf:
Cho em hỏi sao lúc in ra màn hình console, nó không ghi tên em, nó chỉ ghi tên xong bỏ luôn phần em mới điền vào cụ thể: em điền 14 9 long gioi a ra màn hình console cái printf cuối nó ghi:ban 14, lop 9, ten , hoc luc gioi, thich chu a #include <stdio.h> #include <stdlib.h> int main() { int tuoi, lop; char ten[10]; char hocluc[4]; char kytu; printf("ban bao nhieu tuoi, lop may, ten gi, hoc luc gi, thich chu gi"); scanf("%d %d", &tuoi, &lop); scanf("%s", ten); …
Đạt đã trả lời ở đây
Nhưng mà Đạt chưa hướng dẫn cách sử dụng hàm fgets
một cách chi tiết. Nhiều bạn mới học hay dùng scanf để nhập chuỗi. Nhưng đó không phải là cách đúng để nhập chuỗi.
Có bạn nào có thể giúp mình giải thích cách sử dụng hàm fgets không?
Bài liên quan
Thôi thì vô cplusplus coi cho lẹ: http://www.cplusplus.com/reference/cstdio/fgets/
char* fgets ( char* str, int num, FILE * stream );
Đọc kí tự từ stream và lưu vào chuỗi (kiểu trong C), tham số thứ 2 là số kí tự sẽ đọc (từ 0 đến num-1), tham số thứ 3 mặc định là file stdin (đọc từ file khác thì bỏ link file vào đó).
Thông thường mấy bạn mới học chỉ dùng mỗi tham số thứ 1 cho hàm fgets nên cứ nghĩ fgets chỉ cần 1 tham số là cái chuỗi cần đọc dữ liệu vào từ bàn phím.
3 điều kiện dừng thôi
Hàm fgets có dạng char * fgets( char * s, int limit, FILE * stream)
khác biệt scanf và fgets:
hạn chế: