@[zhaoyuhang1231](/user/1011497) 代码都没给完整
by cool_xu @ 2023-08-13 13:24:56
@[cool_xu](/user/937661) ?
by Max6700 @ 2023-08-13 13:26:38
@[zhaoyuhang1231](/user/1011497)
$gets$ 函数有缺陷的,尽量不要去使用 $gets$,这道题按我的思路变量全都要开 $long long$,变量定义大点也好
$gets()$ 函数存在⼀个严重的缺陷,这个缺陷就是:它不会检查数组是否能够装的下输⼊⾏
$gets$ 函数没有限制它所读取长度,程序员应该保证 $buffer$ 有足够的空间,否则 $buffer$ 可能无法容纳 $gets$ 所读取的内容,从而导致堆栈溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值。
###### 如下图(溢出)
![](https://img-blog.csdn.net/20140419173926312?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY19iYXNlX2ppbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
by keinog @ 2023-08-13 13:28:02
@[zhaoyuhang1231](/user/1011497) 特判0
```if(s1[0]=='0')cout<<0;```
by Max6700 @ 2023-08-13 13:28:08
@[keinog](/user/1050091) ~~图炸了~~
by Max6700 @ 2023-08-13 13:28:28
@[zhaoyuhang1231](/user/1011497) 而且你的代码不太完整
by keinog @ 2023-08-13 13:28:43
@[zhaoyuhang1231](/user/1011497) 确实这边建议用```string```,直接```cin```
by Max6700 @ 2023-08-13 13:29:06
@[zhaoyuhang1231](/user/1011497)
中间如果有零不能删除的
```
#include <bits/stdc++.h>
using namespace std;
char str[11];
bool un = false,unzero;
int main() {
gets(str);
if (str[0] == '-') {
un = true;
}
int len = strlen(str);
if (un) {
cout << "-";
}
while (len--) {
if (str[len] == '0' && unzero==false || str[len] == '-') {
continue;
}else{
unzero=true;
}cout << str[len];
}
}
```
by cool_xu @ 2023-08-13 13:29:13
@[Max6700](/user/935012) 我这里图没有炸a
by keinog @ 2023-08-13 13:29:26
C++11的main前居然不需要int?
by cool_xu @ 2023-08-13 13:30:09