Nguyên tắc thực hiện là sẽ đọc từng ký tự một, cho tới khi gặp xuống hàng \n
hoặc EOF
.
int eof_or_line_break(char c) // Kiểm tra xuống hàng hoặc EOF
{
return (c == '\n' || c == EOF);
}
// cho phép nhập vào max_len để đề phòng lỗi khi dòng quá dài, vượt qua kích thước chuỗi
int readline(char * line, int max_len, FILE *fp)
{
char c;
int i = 0;
// nếu không phải eof_or_line_break hoặc quá dài
while( !eof_or_line_break(c = fgetc(fp)) && i < max_len - 1)
line[i++] = c;
line[i] = 0; // kết thúc chuỗi
if (i == max_len - 1) // neu line dai hon max_len
while( (c = fgetc(fp)) != '\n') // bo het doan phia sau
;
return i; // số byte đã đọc, không tính kết thúc chuỗi
}
Cách sử dụng
#define MAX_LEN 10
FILE * fp = fopen("input","r");
char line[MAX_LEN];
readline(line, MAX_LEN, fp);