Предисловие:Чтение файла построчно в C
Этот вопрос о чтении файла, строка за строкой, и вставить каждую строку в связный список.
Я уже написал реализацию для связанного списка и проверил функцию вставки () вручную. Это работает. Я также написал код для чтения текста из файла и записал его. Опять же, это тоже работает.
ХОРОШО: вот мой вопрос
Как объединить эти понятия, и написать функцию, которая считывает текст из файла, строка за строкой и вставки каждой строки в качестве узла в связанный список?
При чтении из файла, я делаю следующее:
//Code for reading a file
int c;
while((c = getc(f))!= EOF) {
putchar(c); //Prints out the character
}
fclose(f); //Close the file
The вставки() функции принимает два параметра, один из которых связанного узла списка, а второй из которых является ВаЬаЕпЬга (» строка "), которая должна храниться в этом узле.
void insert(node_lin *head, char *dataEntry) { ... }
Следовательно, поскольку функция ЕОКП получает каждый символ отдельно, а putchar выписывает каждый символ на экран, я представляю код, чтобы сделать что-то вдоль этих линий:
- Читать каждый символ до тех пор, конец файла (EOF)
- Для каждого символа, до достижения новой строки ('\ n'), добавьте это к ранее прочитанным символам (строя строку)
- Если вы достигнете конца строки, вставьте эту «строку» в связанный список
Повторяйте до достижения EOF
//Code for reading a file int c; while((c = getc(f))!= EOF) { //Build a string here consisting of characters from c, until reaching a new line. /* if(c == '\n') { //Indicates a new line //Insert the line you have into the linked list: insert(myLinkedList, line); } */ } fclose(f); //Close the file
Дела в том, я уже не имею рабочую read_file функции, а также функции рабочей вставки(). Мне нужна помощь в том, чтобы разделить файл на строки и вставить их.
Спасибо, ребята!
Просто используйте 'fgets '. – someuser
Или даже лучше, используйте [getline (3)] (http://man7.org/linux/man-pages/man3/getline.3.html), если ваша система имеет его. –
Вы можете прочитать весь файл в одном блоке, затем заменить новые строки на 0 и создать свой список, чтобы указать на начало строк в блобе. – hyde