Перейти к содержанию

Строки из файла


Гость

Рекомендуемые сообщения

#include <stdio.h>
#define MAX_STR_SIZE 256  /* Максимальная длина строки */

int main()
{
    FILE *fhandle = fopen("./filename.txt", "r");
    if (!fhandle)
    {
        /* Ошибка открытия файла */
    }
    char line[MAX_STR_SIZE];
    while (!feof(fhandle))
    {
        fgets(line, MAX_STR_SIZE, fhandle); /* В line - считанная строка */
        /* ... */
    }
    fclose(fhandle);
    return 0;
}


Или нужно в один массив все засунуть? Если да, то:
а) Известно ли кол-во строк в файле по заданию?
б) Если кол-во строк не известно, можно ли использовать выделение памяти "ручками"?
в) Можно использовать С++? Тогда и (а) и (б) не нужно...
Ссылка на комментарий
Поделиться на другие сайты

Попробуйте такое:

#include <sys/types.h>

#include <sys/stat.h>

#include <unistd.h>

#include <fcntl.h>

#define FILE_NAME "fn"

int

main (void)

{

struct stat st;

int fd, lines, i, j;

char *buf, **a;

stat (FILE_NAME, &st);

if (!st.st_size)

return 1;

buf = malloc (st.st_size);

fd = open (FILE_NAME, O_RDONLY);

read (fd, buf, st.st_size);

/* Количество строк */

for (i = 0, lines = 0; i < st.st_size; i++)

if (buf == '\n')

lines++;

a = malloc (lines);

/* Распихиваем по массиву */

a [0] = buf;

for (i = 0, j = 1; i < st.st_size;i++)

if (buf == '\n')

{

a[j++] = &buf[i + 1];

buf = 0;

}

return 0;

}

FILE_NAME - имя файла, используются только системные вызовы, под Виндой вряд ли заработает Smile

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...