C-循环意外结束

因此,我尝试在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()用于%c读取字符,因此您的代码应为

scanf(" %c", &input);

通过在%c说明符后面添加空格,您还会消耗可能意外添加的任何新行或空格字符,然后更正循环问题。

另一个想法是,您需要在字符串上附加一个额外的字符:空字符,即'\0'字符。这就是为什么您需要做的原因s = malloc(max*sizeof(int) + 1);,以便您有剩余的空间'\0',在这种情况下,您可以在stackPush()函数上动态添加,如下所示:

void stackpush(char item){
    s[N++] = item;
    s[N] = '\0';
}

另外,在您的stackPush职能中,您想要的s[N] = item;不是s[N] += item;

有关C字符串的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++ While循环意外结束

来自分类Dev

线程意外结束。C ++

来自分类Dev

基本循环意外结束

来自分类Dev

C编程无法结束循环

来自分类Dev

如何结束C中的循环?

来自分类Dev

C ++ lcov到达文件意外结束

来自分类Dev

While循环意外终止(C / C ++)

来自分类Dev

程序在c ++中的for循环后结束

来自分类Dev

Bash:Makefile中的for循环:文件意外结束

来自分类Dev

如何以0.00001([C ++],[Taylor Series])的精度结束while循环?

来自分类Dev

用C语言结束do-while循环

来自分类Dev

我的C代码没有停止,我无法结束循环

来自分类Dev

如何使用Escape键结束C中的循环

来自分类Dev

C#while循环没有结束

来自分类Dev

如何使用循环结束 C++ 上的行

来自分类Dev

C:即使指定结束,While 循环也没有结束

来自分类Dev

C意外标识符-用于循环增量

来自分类Dev

sh:-c:第1行:语法错误:文件意外结束

来自分类Dev

c# - Stream 意外结束,内容可能已被另一个组件读取

来自分类Dev

“解析错误:语法错误,第104行的C:\ xampp \ htdocs \ trial \ register.php中文件意外结束

来自分类Dev

SyntaxError:意外的输入结束

来自分类Dev

Parsec输入意外结束

来自分类Dev

输入意外结束

来自分类Dev

zip:存档意外结束

来自分类Dev

PHP会话意外结束

来自分类Dev

EOF文件意外结束

来自分类Dev

Parsec输入意外结束

来自分类Dev

文件bashrc意外结束

来自分类Dev

JSON输入意外结束