我正在尝试编写一个C语言中的中缀转后缀程序,但是当我开始输入符号时,循环在第一个输入处就结束了。
我相信这个问题某处是数据类型问题,但我无法找到原因所在。
以下是代码:
#include <stdio.h>
#include <stdlib.h>
static int N;
static char *s;
void stackinit(int max){
s = malloc(max*sizeof(int));
N = 0;
}
int stackempty(){
if(N==0)
return(1);
else
return(0);
}
void stackpush(char item){
s[N] += item;
N++;
}
int stackpop(){
N--;
return(s[N]);
}
int priority(char x){
if(x == '+' || x == '-')
return(0);
if(x == '*' || x == '/')
return(1);
}
int main(void){
int i,sum;
char input;
printf("Infix to Postfix\n");
printf("How many characters will you enter?");
scanf("%d", &sum);
stackinit(sum);
for(i = 0; i < sum; i++){
printf("Enter character: ");
scanf("%s", &input);
stackpush(input);
}
while(!stackempty()){
printf("%d ", stackpop());
}
/*for(i = 0; i < sum; i++){
}*/
}
scanf("%s", &input);
应该改为scanf("%c", &input);
。 - Adam BurrystackPush
中,你不需要使用+=
,只需要用=
。 - Scott Mermelstein