```cpp
[Line 10] scanf("%s", &h);
```
应去掉 `&h` 中的 `&`。
by 035966_L3 @ 2022-07-18 23:44:23
@[miyou379](/user/254609)
在你的程序第23到第29行中,如果字符串结尾不是0仍会弹栈,导致后面在访问栈顶时会发生内存越界,将栈顶不为0的判断删掉就行
by Martin8521 @ 2022-07-18 23:48:15
而且你只判断了一次结尾为0的情况,应当改为
```cpp
while (s.top() == '0') {
s.pop();
lgth -= 1;
}
```
同时应当对输入为0时进行特判
by Martin8521 @ 2022-07-18 23:50:13
@[miyou379](/user/254609)
AC程序是这样的
```cpp
#include <bits/stdc++.h>
using namespace std;
stack<int> s;
char h[13] = {};
int flag = 0;
int lgth;
int main() {
scanf("%s", &h);
if(h[0] == '0'){
cout << "0";
return 0;
}
lgth = strlen(h);
if (h[0] == '-') {
flag = 1;
for (int j = 1; j <= lgth - 1; j++)
s.push(h[j]);
lgth -= 1;
printf("-");
} else {
for (int m = 0; m <= lgth - 1; m++)
s.push(h[m]);
}
//输出
while (s.top() == '0') {
s.pop();
lgth -= 1;
}
for (int p = 1; p <= lgth; p++) {
printf("%c", s.top());
s.pop();
}
return 0;
}
```
by Martin8521 @ 2022-07-18 23:52:50
@[Martin8521](/user/577302) 谢谢,学到了!
by miyou379 @ 2022-07-19 00:11:56
@[035966_L3](/user/365654) 感谢更正,已纠正
by miyou379 @ 2022-07-19 00:12:20