Я делаю программу в C++, которая должна записать значение переменной (температуры) в.txt.
Предположим, что я хочу постоянно вставлять значение этой переменной в файл.txt в новые строки. Этот файл file.txt должен выглядеть примерно так:
БЕЗ пустой новой строки ниже последнего значения (37.1). Файл должен заканчиваться рядом с последним значением, а не ниже, в этом примере, рядом с 1. НО, если в файл будут вставлены новые данные, я хотел бы вставить это ниже (37.1), например:
Im сделал этот код, но я не знаю, как поместить новые данные в новую строку, не создавая пустую новую строку ниже последнего значения.
#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);
}
Спасибо!
Когда вы запрашиваете c++, ваш код должен выглядеть так:
#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;
}
Для обычного c выполните:
#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
, чтобы узнать, делает ли ваша программа то, что она должна.
if (!file.empty) { fprintf(file, "\n"); } fprintf(file, "data");
return 0;
, неreturn(0);
, Это не функция.