Chức năng fread()
không quan tâm về ngắt dòng. Các mã sau đây sẽ đọc nội dung của input_file_name
và lưu chúng vào mảng file_contents
:
char *file_contents;
long input_file_size;
FILE *input_file = fopen(input_file_name, "rb");
fseek(input_file, 0, SEEK_END);
input_file_size = ftell(input_file);
rewind(input_file);
file_contents = malloc(input_file_size * (sizeof(char)));
fread(file_contents, sizeof(char), input_file_size, input_file);
fclose(input_file);
Bạn chỉ có thể thực hiện một chuỗi các mảng này nếu input_file_name
chứa các nhân vật \0
. Nếu không, hãy thay đổi ba dòng cuối cùng thành:
file_contents = malloc((input_file_size + 1) * (sizeof(char)));
fread(file_contents, sizeof(char), input_file_size, input_file);
fclose(input_file);
file_contents[input_file_size] = 0;
điều này đã được hỏi ít nhất một trăm lần, tôi đoán – akappa