用DEV C++ 跑程式是可以跑 且用測資去測出來的答案也是對的
但是在這邊卻一直顯示
系統呼叫了 abort 函式! *** stack smashing detected ***: terminated Aborted (core dumped)
這是為什麼?
程式如下
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n,len;
string a,password;
len=0;
cin>>a;
len=a.length();
for(n=0;n<len;n++){
password[n]=a[n]-7;
}
for(n=0;n<len;n++){
cout<<char(password[n]);
}
return 0;
}
用DEV C++ 跑程式是可以跑 且用測資去測出來的答案也是對的
但是在這邊卻一直顯示
系統呼叫了 abort 函式! *** stack smashing detected ***: terminated Aborted (core dumped)這是為什麼?
string a,password;
password[n]=a[n]-7;
看到stack smashing detected就要知道是buffer overflow了。
你的password大小不夠大,你可以在修改password[n]之前先resize()就可以避免這個問題了。