Hàm fgets() trong C – Đọc Một Chuỗi Ký Tự Vào File

Hàm char *fgets(char *str, int n, FILE *stream) trong Thư viện C chuẩn đọc một dòng từ Stream đã cho và lưu trữ nó vào trong chuỗi được trỏ bởi str. Nó dừng khi gặp bất cứ điều kiện nào sau: (n-1) ký tự đã được đọc, ký tự newline (dòng mới) được đọc hoặc bắt gặp end-of-file.

Bạn đang không biết hàm fgets() trong C viết như thế nào? Hãy để Khophanmem24h giúp bạn cách viết hàm fgets() trong C nhé!

Hàm char *fgets(char *str, int n, FILE *stream) trong Thư viện C chuẩn đọc một dòng từ Stream đã cho và lưu trữ nó vào trong chuỗi được trỏ bởi str. Nó dừng khi gặp bất cứ điều kiện nào sau: (n-1) ký tự đã được đọc, ký tự newline (dòng mới) được đọc hoặc bắt gặp end-of-file.

 

Khai báo hàm fgets() trong C

Hàm fgets() đọc n-1 ký tự từ một luồng vào tham chiếu bởi fp. Nó copy chuỗi đọc đến bộ đệm buf, gán ký tự null vào kết thúc chuỗi.
Nếu hàm gặp phải một ký tự newline (xuống dòng) ‘\n’ hoặc ký tự EOF trước khi đọc được số lượng tối đa các ký tự, nó sẽ chỉ trả về các ký tự cho đến ký tự xuống dòng và ký tự xuống dòng mới. Bạn có thể sử dụng hàm int fscanf(FILE *fp, const char *format, …) để đọc chuỗi từ một file.

Dưới đây là phần khai báo cho hàm fgets() trong C:

char *fgets(char *str, int n, FILE *stream)

Tham số

str — Đây là con trỏ tới một mảng các char nơi chuỗi được đọc được lưu trữ.

n — Đây là số ký tự tối đa được đọc (bao gồm ký tự null cuối cùng). Thường thì độ dài của mảng đã truyền là str được sử dụng.

stream — Đây là con trỏ tới một đối tượng FILE mà nhận diện Stream, nơi mà các ký tự được đọc từ đó.

Trả về giá trị

Nếu thành công, hàm trả về cùng tham số str. Nếu bắt gặp EOF và không có ký tự nào đã được đọc, nội dung của str vẫn không thay đổi và một con trỏ null được trả về.

Nếu một lỗi xuất hiện, một con trỏ null được trả về.

Ví dụ

Chương trình C sau minh họa cách sử dụng của hàm fgets() trong C:

#include <stdio.h> int main() { FILE *fp; char str[60]; /* mo file de doc */ fp = fopen("baitapc.txt" , "r"); if(fp == NULL) { perror("Xay ra loi trong khi doc file"); return(-1); } if( fgets (str, 60, fp)!=NULL ) { /* Ghi noi dung len stdout */ puts(str); } fclose(fp); return(0); }

Giả sử chúng ta có baitapc.txt với nội dung sau. File này sẽ được sử dụng như là input cho chương trình C ví dụ:

Đặt file có tên

Biên dịch và chạy chương trình C trên sẽ cho kết quả:

Kết quả sau khi chạy chương trình