嗨,這是一個非常簡單的代碼,我只是爲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