嗨,这是一个非常简单的代码,我只是为C++文件I/O练习编写的。但是当我运行这个时,我得到了一个Segmentation Fault (core dumped)
异常。 这里是我下面的代码:写入文件时核心转储?
我不知道是哪里的问题,但错误信息“赛格故障(核心转储)”显示,输入输出文件名后。
谢谢
嗨,这是一个非常简单的代码,我只是为C++文件I/O练习编写的。但是当我运行这个时,我得到了一个Segmentation Fault (core dumped)
异常。 这里是我下面的代码:写入文件时核心转储?
我不知道是哪里的问题,但错误信息“赛格故障(核心转储)”显示,输入输出文件名后。
谢谢
cin >> filename
将是不确定的行为,因为filename
是未初始化的指针。
如果你想存储字符,你需要为它们分配空间。所以,你可以这样做:
char filename[150] = {0};
cin >> filename; // OK, you provide space for 149 characters. Will still break
// if more characters are provided by the user.
或:
#include <string>
std::string filename; // overloads operators >> and << with streams
// automatically performs memory management
// std::cin >> filename; /* Would stop at first space */
std::getline(std::cin, filename); // better: will stop at any carriage return
PLS分配一些内存用于文件名,UR仅使用ponter。 进行更改
char filename[50];
喜这似乎是这个问题,但是当我改变'filename'是字符串,我有另外一个麻烦,当我通过文件名'File.open方法()',因为它需要常量char *但不是字符串。它甚至无法工作,当我尝试'static_cast'它。你有什么想法解决这个问题?谢谢 –
2012-02-03 06:06:48
@Allan Jiang:'std :: string'的方法'c_str()'是你想得到'const char *'的东西。 'open(filename.c_str(),...)'请[读这里](http://en.cppreference.com/w/cpp/string/basic_string)引用的基类。 – Benoit 2012-02-03 06:08:32
我看到谢谢你 – 2012-02-03 06:09:40