1

我对编程比较陌生。我想要完成的是写入一个我认为它被调用的 FIFO 文件。基本上,如果我在终端窗口中,我可以执行命令echo "0=0" > /dev/pi-blaster,它将按预期工作。所以我想做的是编写一个程序,它基本上会为我执行该命令,但会更改双引号之间的数字。我知道如何使用循环更改数字我只是无法让它实际写入文件。在编译或运行期间没有生成任何错误,它根本不像我要键入上面的命令那样起作用。就像我说的我是编程新手,所以也许我什至没有走在正确的道路上。我在下面包含了我的代码:

#include <stdio.h>
#include <stdlib.h>

   int main(void)
   {
      FILE *fp;
      int i;

      fp = fopen("/dev/pi-blaster", "w");
      if (fp == NULL) {
         printf("I couldn't open pi-blaster for writing.\n");
         exit(0);
      }

      for (i=0; i<=10; ++i)
         fprintf(fp, "echo %d=%d", i, i*i);

      return 0;
   }
4

1 回答 1

2

您正在做的是将实际的echoshell命令写入文件,而不是例如0=0.

你应该只做

fprintf(fp, "%d=%d\n", i, i * i);

PS。您不必担心刷新文件缓冲区,它会在文件关闭时自动完成,并且在进程退出时文件将被关闭(但明确关闭您打开的文件被认为是好的,即使它是技术上不需要)。

于 2013-02-24T06:39:49.193 回答