#29953: 程式是對的 用DEV C++跑測資也過 但這邊過不了


seriously073005@gmail.com (33楊承翰)

學校 : 不指定學校
編號 : 190295
來源 : [163.13.146.107]
最後登入時間 :
2024-06-12 11:06:45
a009. 解碼器 -- ACM 458 | From: [203.72.57.220] | 發表日期 : 2022-04-15 16:08

用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;

}

 
#29954: Re:程式是對的 用DEV C++跑測資也過 但這邊過不了


cges30901 (cges30901)

學校 : 不指定學校
編號 : 30877
來源 : [39.9.74.255]
最後登入時間 :
2024-10-14 22:20:08
a009. 解碼器 -- ACM 458 | From: [39.9.234.113] | 發表日期 : 2022-04-15 17:43

用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()就可以避免這個問題了。

 
ZeroJudge Forum