стереть данные из файла (библиотека SD)
- Войдите на сайт для отправки комментариев
Пнд, 29/09/2014 - 05:55
Здравствуйте. столкнулся с такой проблемой при использовании библиотеки SD
есть файл "test.txt" в нем хранится число. например 100
я хочу увеличить это число например прибавив 10
myFile = SD.open("test.txt", FILE_WRITE); n=100; m=10; if (myFile) { m+=n; myFile.seek(0); //чтобы записывать с позиции 0 myFile.println(m); myFile.close(); }
И все хорошо. получаю 110.
Но вот если вычитать (например 102-90) должно получиться 12, но по факту получается 122 (12 и 2 оставшаяся от предыдушего числа 102).
вопрос - как стереть содержимое файла перед записью?
(вариант с удалением файла и созданием нового не предлагать. через некоторое время карта от такого подхода начинает глючить)
читать как
У меня впечатление что на форуме проходит конкурс "тупой и еще тупее"
cc_coba, может быть что:
1. в файле было число длинной три символа
2. вы записали поверх него число длинной два символа
3. третий символ остался на месте.
Предлагаю
1. зафиксировать формат данных в файле. Например: четыре цифры. Всегда читать и писать по 4 цифры, включая лидирующие нули.
2. и желательно: перейти на работу с файлом как с набором байтов, а не строкой.
1. в файле было число длинной три символа
2. вы записали поверх него число длинной два символа
3. третий символ остался на месте.
.
Гениально! Долго думали? Или сразу догадались что 102 минус 90 равно 12 и плюс 2 от 102. Претендуете на первое место?
:) в уме считал - не получилось. Поэтому написал "может быть". Претендую на третье место. Ещё тупее тупого.
Я так и подумал что мучили сомнения. Гы
ваш ответ показывает только ваш "богатый внутренний мир" и ничего больше
1) спасибо за идею попробую
2) а не подскажите как это сделать?
2) используйте метод write (http://arduino.cc/en/Reference/FileWrite) класса File вместо метода print. А для чтения метод read.