У меня есть программа, над которой я работаю, которая начнет и остановит серво. Я могу выполнить следующую команду из командной строки, и она работает. echo 2=120 > /dev/servoblaster
, который запустит серво в движении. Теперь у меня есть следующая программаКак написать файл в C
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp;
fp = fopen("/dev/servoblaster", "w");
if (fp == NULL) {
printf("Error opening file\n");
exit(0);
}
fprintf(fp, "2=120");
fclose(fp);
fflush(fp);
return 0;
}
Но когда я исполню это ничего не происходит, теперь, когда я пытаюсь echo 2=120 > /dev/servoblaster
команду он будет говорить Bad input: 2=1202=120
, но если я повторить тот же echo 2=120 > /dev/servoblaster
команду он будет работать снова. Если бы я попытался выполнить мою вышеприведенную программу 3 раза, когда я попытаюсь выполнить команду echo
, ее вывод будет Bad input 2=1202=1202=120 2=120
, так что мне кажется, что файл не был записан в мою программу. Может ли кто-нибудь указать, что я чего-то не хватает?
'fflush (FP)' не может быть сделано после того, как 'fclose (FP)', потому что после закрытия указателя больше не действует. Вы должны поменять два вызова. –