【问题标题】:file handling I/O c++ error文件处理 I/O c++ 错误
【发布时间】:2018-05-20 18:59:11
【问题描述】:

这是我试图运行的代码。编译器显示一些警告,变量“p”可能未初始化使用。 而且..在运行时有问题..我会在下面显示.. 请纠正我并解释。 谢谢你。 execution of code * code 那个错误是……输出的字符数组的前两个元素有点乱!!!*

#include<bits/stdc++.h>
using namespace std;
class file{
public:int a;
char* name;
public:
file(int x,char* b):a(x){name=b;}
void printfile(){cout<<a<<" "<<name<<endl;}
};
int main(){
char *p;
int x=10;
cout<<"enter a name"<<endl;
cin>>p;
file k(x,p);
ofstream f("file",ios::out|ios::binary);
f.write((char*)&k,sizeof(class file));
f.close();
ifstream of("file",ios::in|ios::binary);
file o(0,'\0');
of.read((char*)&o,sizeof(class file));
o.printfile();
of.close();
return 1;
}

【问题讨论】:

  • 请在问题中包含您的代码,现在是代码图片的链接。
  • 欢迎来到 StackOverflow。请阅读How to Ask 并提供minimal reproducible example
  • 正确格式化您的帖子,而不是在 imgur 中包含代码
  • 但是按照@BooleanCheese 的说法正确格式化您的帖子后,请正确格式化您的实际代码。请不要这样格式化。请。
  • 我已按要求输入代码。请检查问题。谢谢。

标签: c++ c++11 c++14


【解决方案1】:

你有 p 作为一些指针。谁来分配指针指向的内存?
在 C 中,调用者几乎总是负责在调用之前分配任何缓冲区。
如果您不想这样做,请改用 std::string。

【讨论】:

    【解决方案2】:

    首先,我建议您阅读一些有关 c++ 指针和内存处理的基本手册,以便您更好地了解问题的根源。

    您的代码中有两个主要问题。 首先是您正在创建一个未连接到任何已分配内存的指针。简而言之,您要求访问内存地址而不要求系统为您保留它。

    此外,在那个内存位置已经可以存储任何位配置。变量的初始化是为一块内存提供一些具有有意义解释的数据的任务。在这种特殊情况下,我什至不确定 char* 的流内运算符应该做什么。他可能会将您的字符附加在最后一个不是 0 或行尾的字符之后。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 2020-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多