0

我正在用 C++ 编写一个程序,它应该将变量的(温度)值写入 .txt。

假设我想在新行的 file.txt 中不断插入这个变量的值。此 file.txt 应如下所示:

  • 37.0
  • 36.0
  • 37.1

最后一个值 (37.1) 下方没有空白换行符。该文件应该在最后一个值旁边结束,而不是在下面,在这个例子中,在 1 旁边。但是如果有新数据要插入到文件中,我想在下面插入(37.1),如下所示:

  • 37.0
  • 36.9
  • 37.1
  • 38.0(新数据)。

我制作了这段代码,但我不知道如何将新数据放在新行中而不在最后一个值下方创建一个空白换行符。

#include <stdio.h>
#include <"eHealth.h>

int main(){
   while(1){
      float temperature = eHealth.getTemperature();
      FILE *myData;
      myData=fopen("file.txt","a");
      fprintf(myData,"%f",temperature);
      fprintf("%\n");
      fclose(myData);
      }
   return(0);
}

谢谢!

4

1 回答 1

0

当您要求使用时,您的代码应如下所示:

#include <ofstream>
#include <chrono>
#include <thread>

int main() {
    std::ofstream out("file.txt");
    bool firstLine = true;
    while(1) { // consider some reasonable shutdown condition, but simply 
               // killing the process might be sufficient
        float temperature = eHealth.getTemperature();

        if(!firstLine) {
            out << std::endl;
        }
        else {
            firstLine = true;
        }
        out << temperature;
        out.flush();

        // Give other processes a chance to access the CPU, just measure every
        // 5 seconds (or what ever is your preferred rate)
        std::this_thread::sleep_for(std::chrono::milliseconds(5000));
    }
    return 0;
}

对于普通做:

#include <stdio.h>
#include <unistd.h>

int main() {
    FILE *out = fopen("file.txt","a");
    if(out == NULL) {
        perror("Cannot open 'file.txt'");
        return 1;
    }

    bool firstLine = true;
    while(1) { // consider some reasonable shutdown condition, but simply 
               // killing the process might be sufficient
        float temperature = eHealth.getTemperature();
        if(!firstLine) {
            fprintf(out,"\n");
        }
        else {
            firstLine = true;
        }
        fprintf(out,"%f",temperature);
        fflush(out);

        // Give other processes a chance to access the CPU, just measure every
        // 5 seconds (or what ever is your preferred rate)
        sleep(5);
    }
    fclose(out);
    return 0;
}

提示:如果您在 *nix 之类的系统上测试您的代码,您可以简单地使用该tail -f file.txt命令来查看您的程序是否执行了应有的操作。

于 2013-10-30T01:19:58.330 回答