Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将printf流输出重定向到.csv文件?_C++_C_Csv_Data Stream - Fatal编程技术网

C++ 如何将printf流输出重定向到.csv文件?

C++ 如何将printf流输出重定向到.csv文件?,c++,c,csv,data-stream,C++,C,Csv,Data Stream,从传感器获得的数据流看起来像元组序列: sensor: (-0.560303, -0.627686, 0.467468) sensor: (-0.561829, -0.626160, 0.466125) sensor: (-0.556091, -0.623352, 0.471497) sensor: (-0.558411, -0.625977, 0.468811) sensor: (-0.557312, -0.626587, 0.468262) sensor: (-0.557800, -0.

从传感器获得的数据流看起来像元组序列:

sensor: (-0.560303, -0.627686, 0.467468)  
sensor: (-0.561829, -0.626160, 0.466125)
sensor: (-0.556091, -0.623352, 0.471497)
sensor: (-0.558411, -0.625977, 0.468811)
sensor: (-0.557312, -0.626587, 0.468262)
sensor: (-0.557800, -0.625854, 0.465820)
sensor: (-0.563599, -0.624512, 0.464722)
sensor: (-0.555847, -0.623230, 0.467163)
sensor: (-0.557861, -0.621033, 0.468811)
sensor: (-0.555420, -0.625061, 0.470520)
sensor: (-0.559082, -0.626221, 0.475891)
sensor: (-0.559814, -0.625977, 0.466309)
sensor: (-0.561768, -0.624756, 0.467163)
sensor: (-0.551941, -0.628906, 0.469055)
sensor: (-0.556946, -0.626465, 0.471313)
sensor: (-0.558533, -0.626038, 0.469421)
sensor: (-0.557922, -0.625061, 0.467285)
sensor: (-0.562622, -0.623657, 0.469971)
sensor: (-0.554443, -0.625977, 0.465759)
sensor: (-0.559265, -0.626282, 0.471619)
sensor: (-0.558716, -0.625427, 0.471375)
sensor: (-0.559143, -0.626526, 0.467468)
sensor: (-0.554749, -0.626221, 0.468079)
sensor: (-0.554626, -0.622681, 0.467285)
sensor: (-0.557983, -0.625549, 0.475464)
sensor: (-0.555603, -0.626343, 0.466980)
sensor: (-0.559570, -0.625854, 0.470398)
sensor: (-0.556946, -0.626587, 0.466858)
sensor: (-0.557373, -0.626526, 0.470093)
sensor: (-0.558716, -0.629272, 0.464905)
sensor: (-0.555725, -0.625732, 0.473877)
sensor: (-0.560608, -0.626282, 0.469238)
sensor: (-0.556335, -0.626221, 0.467590)
sensor: (-0.558777, -0.623840, 0.468994)
到目前为止,我正在将所有这些数据打印到如下终端:

if (sensor_data) {
            mpu.readSensorData(sensor);
            float ax = sensor[0] * 250.0 / 368.0;
            float ay = sensor[1] * 250.0 / 368.0;
            float az = sensor[2] * 250.0 / 368.0;
            pc.printf("\nsensor: (%f, %f, %f)\n", ax,ay,az);
        }*/


        wait(0.5);
sensorX, sensorY, sensorZ
-0.560303, -0.627686, 0.467468
-0.557312, -0.626587, 0.468262
-0.557800, -0.625854, 0.465820
-0.555420, -0.625061, 0.470520
...
-0.555725, -0.625732, 0.473877
如何将上述
printf
输出元组重定向到单个.csv文件中,如下所示:

if (sensor_data) {
            mpu.readSensorData(sensor);
            float ax = sensor[0] * 250.0 / 368.0;
            float ay = sensor[1] * 250.0 / 368.0;
            float az = sensor[2] * 250.0 / 368.0;
            pc.printf("\nsensor: (%f, %f, %f)\n", ax,ay,az);
        }*/


        wait(0.5);
sensorX, sensorY, sensorZ
-0.560303, -0.627686, 0.467468
-0.557312, -0.626587, 0.468262
-0.557800, -0.625854, 0.465820
-0.555420, -0.625061, 0.470520
...
-0.555725, -0.625732, 0.473877

打开一个文件并使用fprintf,将文件句柄传递给它

FILE *myfile = fopen ("myfilename.csv", "w" );
然后在你的循环中:

pc.printf (myfile, "\nsensor: (%f, %f, %f)\n", ax,ay,az);
最后:

fclose (myfile);
当然,这是C风格的解决方案。如果你想使用C++类型的接口(你把它标记为两个),那么就查看使用iOFix.t/P>< P>你在运行程序时可以在命令行中使用“>”。 例如:

/程序>输出.csv

使用printf()函数打印的任何内容都将写入output.csv文件

也可以使用fprintf()函数将所有数据写入文件

FILE* file = fopen("output.csv", "w");
if (file != NULL)
{
        if (sensor_data) 
        {
            mpu.readSensorData(sensor);
            float ax = sensor[0] * 250.0 / 368.0;
            float ay = sensor[1] * 250.0 / 368.0;
            float az = sensor[2] * 250.0 / 368.0;
            fprintf(file, "\nsensor: (%f, %f, %f)\n", ax,ay,az);
        }
}

如果您不介意将输出关闭到终端,您可以使用

frepoen("file.csv", "w", stdout);
这将把
printf
输出重定向到一个文件中。然后可以使用printf写入数据


您还可以使用shell重定向,如
/your_program>file.csv
将标准输出重定向到文件中。

您可以使用不同的选项来执行您的请求

选项1(更多C++)
使用

选项2(C)
您可以像printf一样使用函数,给它一个用创建的文件句柄

选项3(无编程)
如果控制台输出与CSV文件中的输出完全相同,请使用输出重定向到文件:

C:\yourprogram>output.csv


它实际上是一个数据流,这有关系吗?。。你能告诉我怎么做吗?用实际的细节更新了我的答案疯狂的格式化是有原因的吗?是的,因为我想分析这个数据你想分析数据,所以你用一种疯狂的、荒谬的方式格式化了它。。。?好啊祝你好运。csv格式是哪种荒谬的方式@squeamishossifragehe正在谈论您第一次发布的“原始”数据块(您的“\n”仅表示换行符…您至少应该为回车添加“\r”)假设程序中没有其他输出,作者不想重定向到一个文件,假设stdout的格式完全符合OP的要求。不知道为什么这个代码有
pc.fprintf
。它应该是
fprintf
@unbleweed,我刚才说的?删除
pc.
,这样就成了
fprintfe> .@tumbleweed运行程序并将路径写入文件../program>/Users/user/Desktop/output.csv。文件将在桌面上创建