#include <iostream>
#include <stack>
using namespace std;
int main() {
stack<char> s;
char info[1000] = {0};
scanf("%s",info);
for(int i = 0; i<sizeof(info); i++) {
//判断是否为符号
if(info[i]=='+'||info[i]=='-'||info[i]=='*'||info[i]=='/'||info[i]=='('||info[i]==')') {
s.push(info[i]);
}
}
printf("%c",s.top());
}
为了避免这个问题,您可以使用 fgets 函数来读入字符串,并指定字符数组的长度。例如:
fgets(info, 1000, stdin);
为了避免这个问题,您可以使用 strlen 函数来检查字符串的长度,并将它用作循环的终止条件。例如:
for (int i = 0; i < strlen(info); i++) {
// 判断是否为符号
if (info[i] == '+' || info[i] == '-' || info[i] == '*' || info[i] == '/' || info[i] == '(' || info[i] == ')') {
s.push(info[i]);
}
}
综上所述,下面是修改后的代码:
#include <iostream>
#include <stack>
#include <cstring>
using namespace std;
int main() {
stack<char> s;
char info[1000] = {0};
fgets(info, 1000, stdin);
for (int i = 0; i < strlen(info); i++) {
// 判断是否为符号
if (info[i] == '+' || info[i] == '-' || info[i] == '*' || info[i] == '/' || info[i] == '(' || info[i] == ')') {
s.push(info[i]);
}
}
printf("%c", s.top());
return 0;
}