Re: [問題] Segmentation fault
※ 引述《b2305911 (Howard)》之銘言:
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux(編譯器不知道)
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
no
問題(Question):
寫大數運算 目前只做到資料的input和output 尚未寫好運算
作業要求將所有運算時需要的function都放在class裡
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
Segmentation fault
程式碼(Code):(請善用置底文網頁, 記得排版)
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
class BigNum
{
public:
//constructor
BigNum()
{
cur_ptr=new char[100];
in_ptr=new char[100];
}
//add
void Add(const char* ch)
{
}
//functional
void set(const char* ch)
{
if(strlen(ch)>100)
{
delete cur_ptr;
cur_ptr=new char[2*strlen(ch)];
cur_ptr=strcpy(cur_ptr,ch);
}
else
{
strcpy(cur_ptr,ch);
}
}
void set()
{
delete cur_ptr;
cur_ptr=new char[2];//改過之後的
char setZero[]={'0'};
strcpy(cur_ptr,setZero);
}
char* show()
{
return cur_ptr;
}
//destructor
~BigNum()
{
delete cur_ptr;
delete in_ptr;
}
private:
char *cur_ptr,*in_ptr;
int *a_ptr,*b_ptr,*c_ptr;
};
int main(void)
{
BigNum X;
X.set("96325874123654");
cout << X.show() << endl;
X.set();
cout << X.show() << endl;
return 0;
}
補充說明(Supplement):
改過之後linux上可以編譯了
但最後output出來
0的後面會多一個問號 總覺得怪怪的
請問是哪裡還有問題
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.92.21
→
04/03 16:36,
04/03 16:36
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.92.21
※ 編輯: b2305911 來自: 140.113.92.21 (04/03 17:10)
推
04/03 17:10, , 1F
04/03 17:10, 1F
→
04/03 17:10, , 2F
04/03 17:10, 2F
→
04/03 17:17, , 3F
04/03 17:17, 3F
→
04/03 17:18, , 4F
04/03 17:18, 4F
→
04/03 17:19, , 5F
04/03 17:19, 5F
→
04/03 17:20, , 6F
04/03 17:20, 6F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):