Я столкнулся с забавной проблемой с этим кодом, но мне интересно, почему это произошло:
#include <stdio.h>
#include <unistd.h>
#include <iostream>
#include <wiringPi.h>
#define BUTTON_PORT 25
#define FILE_PATH "/path/to/output.txt"
int main(void) {
int buttonState = 0;
int pastButtonState = 0;
int buttonCounter = 0;
if (wiringPiSetupGpio() == -1) return 1;
pinMode(BUTTON_PORT, INPUT);
while(buttonCounter < 100){
if (buttonState == 1 && pastButtonState == 0) buttonCounter++;
usleep(100);
ofstream outputfile(FILE_PATH);
outputfile << buttonCounter << endl;
outputfile.flush();
outputfile.close();
pastButtonState = buttonState;
}
Я ожидал, что output.txt
покажет текущее число * из 1005 *, но файл всегда пуст, и 110 раз файл показывает # из buttonCounter
.(с непрерывным exec less /path/to/output.txt
)
Я знаю, что определенное повторение ofstream outputfile
в while
цикле не является хорошим решением, но я понятия не имею, почему output.txt
обычно пуст.
Я мог бы подумать, что некрасиво использовать ofstream outputfile
в цикле while
, поскольку ofstream outputfile
занимает некоторое время, поскольку это немного высокоуровневая функция.
При установке outputfile
связанной функциив
if (buttonState == 1 && pastButtonState == 0) {...}
работает нормально.Есть идеи?