文件读写操作
一
1.C++
// 打印CSV 逐行写入
#include <fstream>
using namespace std;
std::ofstream f_po("pose.csv", ios::app | ios::out);
f_po << "x" << "," << x << ",";
f_po << "y" << "," << y << ",";
f_po << "yaw" << "," << yaw << ","<< "\n";
f_po.close();
2.C语言
写入文件
//
#include "stdio.h"
*FILE *f_pose = fopen("vehicle_pose.csv", "a");//
if (f_pose == NULL)//判断文件是否打开失败——fopen打开成功,返回一个指向该文件的文件指针;打开失败,返回NULL。
{
perror("fopen");
return -1;
}
//写入
fprintf(f_pose, "%f,%f,%f\n", x , y , yaw );
fclose(f_pose);*/
f_pose = NULL;//关闭文件后,要将原文件指针置为空
写入文件
// An highlighted block
#include "stdio.h"
*FILE *f_pose = fopen("vehicle_pose.csv", "a");
for(int i=0,i<10,i++)
{
fprintf(f_pose, "%f,%f,%f\n", x[i] , yx[i] , yawx[i] );
}
fclose(f_pose);*/
读文件——fscanf
// An highlighted block
#include "stdio.h"
float a,b;
float aa[]={0};
float bb[]={0};
int j=0;
//定义文件指针rd 、 打开文件
*FILE *rd= fopen("vehicle_pose.csv", "r");
//判断文件是否打开失败——fopen打开成功.
if (rd== NULL)
{
perror("fopen");
return -1;
}
//读取文件
while (fscanf(rd, "%lf,%lf", &a, &b) != EOF)
{
aa[j] = a;
bb[j] = a;
j= j+ 1;
}
fclose(rd);
rd= NULL;//关闭文件后,要将原文件指针置为空
fscanf功能:
格式化输入函数,从一个文件流中执行格式化输入,当遇到空格或者换行时结束。注意该函数遇到空格时也结束,这是其与 fgets 的区别,fgets 遇到空格不结束。
输入成功时,返回成功输入的数据个数;
输入失败,或已读取到文件结尾处,返回 EOF。
所以,如果想循环输入时,可以用fscanf的返回值判断读取是否结束
参数:
stream:要输入的文件指针;
剩余参数与scanf相同,格式控制串+输入地址表列。
头文件:
#include “stdio.h”