【问题标题】:How to save continuous 512 bytes into file using fprintf [closed]如何使用 fprintf 将连续 512 字节保存到文件中 [关闭]
【发布时间】:2018-10-04 08:20:05
【问题描述】:

我想将连续 512 个内存位置值保存到 csv 文件中

        memcpy(signals, ascanSamples, ascanSizeInBytes);
        fprintf(fptr1, "%f,", *(signals));

使用 fprintf 我该如何实现呢?

我试过了

fprintf(fptr1, "%f,", 512,512, *(signals)) but it is not working

【问题讨论】:

  • 什么是signals?还有ascanSamples?
  • 首先,只使用你真正编程的语言的语言标签。其次,循环怎么样?
  • 您要写入512字节、512浮点值还是总大小为512字节的浮点值?
  • fprintf() 用于打印,即将值转换为文本形式,这很少以“字节”来衡量,尤其是在涉及浮点值时。这令人困惑。
  • 我们真的需要Minimal, Complete, and Verifiable Example 才能为您提供适当的帮助。请阅读how to ask good questions,以及this question checklist

标签: c++ c visual-c++


【解决方案1】:

这不行,它只会输出第一个值(也可能是因为signals的类型不是floatdouble,你需要提供那个信息):

fprintf(fptr1, "%f,", *(signals));

这不起作用,因为参数与fprintf 格式字符串不匹配:

fprintf(fptr1, "%f,", 512, 512, *(signals))

你的问题有点不清楚,但从你的 cmets 我猜你可能需要这样的东西:

#include <stdio.h>

int main()
{
  short values[] = { 1,2,3,4 };  // your values (using 4 values instead of 512
                                 // for demonstration purpose)

  for (int i = 0; i < 4; i++)
  {
    printf("%f,", (float)values[i]);  // using printf instead of fprintf for
                                      // demonstration purpose
  }
}

这里需要一个循环,没有办法。

输出

1.000000,2.000000,3.000000,4.000000,

对于更符合您需求的代码,我们需要知道您的 signals 变量的类型。

【讨论】:

    【解决方案2】:

    假设您正在写入 512 个字节,您可以使用 %c 格式说明符并迭代信号 512 次。

    【讨论】:

    • 我写的是浮点值
    • 如果需要存储512个值,可以简单地迭代512次,调用fprintf("%f ,", signals[i])
    猜你喜欢
    • 2012-02-29
    • 2013-08-07
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2023-01-20
    • 2017-04-24
    相关资源
    最近更新 更多