c++ - 如何从函数中获取一 block 内存并将其写入文件?

标签 c++ file-io

我想将从名为 NextUnit() 的函数中获取的数据“somebytes”写入名为“output.txt”的文件,但我编写的代码不起作用。当我打开文件时,它看起来不像我的“somebytes”。这是代码:

#include <stdio.h>
#include <string.h>

char* NextUnit()
{
    char Unit[256];
    strcpy(Unit,"somebytes");
    return &Unit[0];
}

int main()
{
    FILE *ourfile;
    ourfile=fopen("output.txt","wb");
    char* somedata;
    somedata=NextUnit();
    printf("%s\n",somedata);
    fwrite(somedata,1,strlen(somedata),ourfile); 
    fclose(ourfile);
}

最佳答案

您正在从函数返回本地地址(也称为已释放堆栈地址)。一旦您调用下一个函数,它就会发生变化。

以太只是返回一个全局常量

const char* NextUnit() { return "somebytes"; }

或者将其复制到一个新的内存结构中,稍后您还需要释放它...

char* NextUnit() 
{ 
    char* newstr = new char[256]; 
    strcpy(newstr,"somebytes"); 
    return newstr;
}

// some code later
char* tmpstr = NextUnit();

// do writing stuff

// free memory
delete tmpstr;

关于c++ - 如何从函数中获取一 block 内存并将其写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157094/

相关文章:

c++ - 构造函数内指向模板成员函数的指针是否会强制实例化?

c++ - 对的多重集,找到

c++ - 模板类的不同对象的通用接口(interface)

java - 修改执行 Jar 文件

iphone - 如何在 iPhone 应用程序中保存 .zip 文件

c++ - 如何从 C++ 使用 Keras SavedModel

c++ - 嵌套循环中迭代器的行为与 C++ 中的随机访问

java - 如果连续写入日志文件,是否可以以编程方式打开日志文件?

c - 将整个文本文件读入一维数组

java - 如何将输入文件中的行分配给类值数组?