стереть данные из файла (библиотека SD)

cc_coba
Offline
Зарегистрирован: 06.03.2014

Здравствуйте. столкнулся с такой проблемой при использовании библиотеки 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
Offline
Зарегистрирован: 06.03.2014
myFile.println(m);

читать как 

myFile.print(m);

 

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

У меня впечатление что на форуме проходит конкурс "тупой и еще тупее"

toc
Offline
Зарегистрирован: 09.02.2013

cc_coba, может быть что:
1. в файле было число длинной три символа
2. вы записали поверх него число длинной два символа
3. третий символ остался на месте.

Предлагаю
1. зафиксировать формат данных в файле. Например: четыре цифры. Всегда читать и писать по 4 цифры, включая лидирующие нули.
2. и желательно: перейти на работу с файлом как с набором байтов, а не строкой.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

toc пишет:
cc_coba, может быть что:
1. в файле было число длинной три символа
2. вы записали поверх него число длинной два символа
3. третий символ остался на месте.
.

Гениально! Долго думали? Или сразу догадались что 102 минус 90 равно 12 и плюс 2 от 102. Претендуете на первое место?

toc
Offline
Зарегистрирован: 09.02.2013

:) в уме считал - не получилось. Поэтому написал "может быть". Претендую на третье место. Ещё тупее тупого.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

toc пишет:
:) в уме считал - не получилось. Поэтому написал "может быть". Претендую на третье место. Ещё тупее тупого.

Я так и подумал что мучили сомнения. Гы

cc_coba
Offline
Зарегистрирован: 06.03.2014

ваш ответ показывает только ваш "богатый внутренний мир" и ничего больше

cc_coba
Offline
Зарегистрирован: 06.03.2014

1) спасибо за идею попробую

2) а не подскажите как это сделать?

toc
Offline
Зарегистрирован: 09.02.2013

2) используйте метод write (http://arduino.cc/en/Reference/FileWrite) класса File вместо метода print. А для чтения метод read.