В настоящее время я пишу программу для Linux, чтобы получить текущее использование ЦП из/proc/stat и напечатать в .txt-файле. Однако при написании файла я не могу напечатать новую строку, а вывод печатает поверх старой ...Новая строка при записи в файл в C?
Я хотел бы напечатать новую строку под предыдущей, но используя "\n"
или "\r"
символов не работает.
Код здесь:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void checker();
int main(){
long double a[4], b[4], loadavg;
FILE *fp;
char dump[50];
for(;;){
fp = fopen("/proc/stat","r");
checker();
fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&a[0],&a[1],&a[2],&a[3]);
fclose(fp);
sleep(1);
fp = fopen("/proc/stat","r");
checker();
fscanf(fp,"%*s %Lf %Lf %Lf %Lf",&b[0],&b[1],&b[2],&b[3]);
fclose(fp);
fp = fopen("CPU_log.txt", "w");
checker();
loadavg = ((b[0]+b[1]+b[2]) - (a[0]+a[1]+a[2]))/((b[0]+b[1]+b[2]+b[3]) - (a[0]+a[1]+a[2]+a[3]));
fprintf(fp, "Current CPU Usage is: %Lf\r\n", loadavg);
fclose(fp);
}
return 0;
}
void checker(){
FILE *fp;
if (fp == NULL){
printf("Error opening file!\n");
exit(1);
}
}
Функция 'checker' выглядит странно, из-за этого:' FILE * fp; if (fp == NULL) {...} '. Вы не проверяете свой 'fp' с' main'. – pzaenger