Easyelectronics.ru

Электроника для всех
Текущее время: 27 апр 2018, 13:40

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: FATFS удаление строки в файле
СообщениеДобавлено: 19 дек 2017, 00:19 
Только пришел
Аватара пользователя

Зарегистрирован: 27 янв 2010, 02:10
Сообщения: 20
Откуда: Украина
Доброго времени суток. Есть проблема, нужно в файле удалить строку в любом месте, как это сделать непонятно на FATFS. Может кто подскажет как решить задачу.

_________________
"Barba crescit , caput nescit"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FATFS удаление строки в файле
СообщениеДобавлено: 19 дек 2017, 00:43 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2411
Откуда: Санкт-Петербург
А что в задаче специфичного для fatfs?
Самые простые пути:
1. Если есть много памяти - прочитать файл целиком, удалить, записать.
2. Если нету - создать временный файл, потихоньку читать из исходного файла, пропускать ненужные строки, писать во временный. По завершении - переименовать временный на имя исходного.
Понадобится память размером со строку (или активно использовать seek).

Да, строка-то у вас целая (ограничена переводами строк) или подстрока в любой строке (привет, Ахо-Корасик Бойер-Мур)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: FATFS удаление строки в файле
СообщениеДобавлено: 19 дек 2017, 01:02 
Только пришел
Аватара пользователя

Зарегистрирован: 27 янв 2010, 02:10
Сообщения: 20
Откуда: Украина
aamonster писал(а):
А что в задаче специфичного для fatfs?
Самые простые пути:
1. Если есть много памяти - прочитать файл целиком, удалить, записать.
2. Если нету - создать временный файл, потихоньку читать из исходного файла, пропускать ненужные строки, писать во временный. По завершении - переименовать временный на имя исходного.
Понадобится память размером со строку (или активно использовать seek).

Да, строка-то у вас целая (ограничена переводами строк) или подстрока в любой строке (привет, Ахо-Корасик)?


Строка ограничена переводом.
Проблемы бы не было, но если бы такая конструкция работало вопроса бы и не было:
Код:
f_mount(&FatFs, "", 0);
fr = f_open(&fila, "temp.txt", FA_WRITE | FA_OPEN_ALWAYS);   
fr = f_open(&fil, "users.txt", FA_READ);
i = 1;
while (f_gets(line, sizeof line, &fil)) {
   if(i != out_SFD[3]){
   f_puts(line, &fila);
   }
   i++;
}
f_close(&fil);
f_close(&fila)


Файл temp.txt просто не создается с разными ключами и с FA_CREATE_ALWAYS
Отсюда и вопрос.
(привет, Ахо-Корасик)? ----- этого не понял

_________________
"Barba crescit , caput nescit"


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB