Я разрабатываю приложение в WinCE7. Приложение включает в себя последовательный COM-порт и операции ввода-вывода файлов. Во встроенном устройстве подключен последовательный порт. Мне нужно проверить состояние входов на устройстве и сохранить их данные в файле. Допустим, если вход 1 высок, мне нужно написать Input 1 HIGH
на последовательном порту и сохранить его в файле.Ошибка записи в файл (fopen) в WinCE7
Теперь, чтобы записать данные в файл Я использую fprintf
& fopen
функции. Код выглядит следующим образом:
main()
{
// some code to initialize serial port
FILE * fp;
fp= fopen ("Logs.txt", "w+"); //-------> create a file named as Logs.txt
while(1)
{
if(Input1 == TRUE)
{
serialPort.Send("Input 1 HIGH");
fprintf(fp,"%s","Input 1 HIGH"); //-------> saving data in file
}
if(Input2 == TRUE)
{
serialPort.Send("Input 2 HIGH");
fprintf(fp,"%s","Input 2 HIGH"); //-------> saving data in file
}
//same goes for rest of the inputs
}
fclose(fp); //----------> closing the file
}
Теперь после записи данных в файл с помощью fprintf
, мы должны использовать fclose()
, чтобы закрыть файл. Но поскольку я должен постоянно контролировать состояние ввода, которое я использовал в то время как (1), из-за которого мой контроль не достигает значения fclose(fp)
. Таким образом, файл не закрыт и он поврежден. Когда я открываю файл, чтобы увидеть сохраненные данные, которые он дал мне под ошибкой:
Как правильно использовать flcose()
и fprintf()
для записи данных в файл.?
Спасибо за объяснение. В настоящее время я открываю файл, чтобы добавить текст, а затем закрыть его в одно и то же время. Поэтому в следующий раз файл откроется для добавления журналов. –
Да, это тоже работает ... Кстати, если количество раз, когда вам нужно писать, очень велико, тогда вам придется многократно открывать и закрывать файл, что скажется на производительности. В любом случае, если все работает, это хорошо. – PRinCEKtd