读取字符串不正确

时间:2010-10-15 18:43:48

标签: c string malloc char

嘿伙计们,我正在研究一个获得后缀表达式并计算它的程序..

我有两个功能:

  1. 将中缀转换为后缀
  2. 计算后缀
  3. 当我尝试小的表达式,如1 + 1或(1 + 1)* 1时,它工作正常 但是当我使用所有操作数时,我会得到一些令人讨厌的东西,

    以下是示例: 2 * 2/2 + 1-1 获得类似的东西: 222 / * 11- +T_CHECKÖÐ7?█Ã

    如果你看到,表达是正确的,直到'T'

    我认为这是一些参数错误,所以我会把标题和返回值放在这里

    第一)

    char* convert(char *infix);
    char *post = (char *)malloc(sizeof(char)*tamP);
    return post;
    

    第二)

    int evaluate(char *postfix)
    while (*postfix != '\0')
    return result;
    

    呼叫者)

    char* post = convert(infix);
    result = evaluate(post);
    

    由于

2 个答案:

答案 0 :(得分:4)

那种奇怪的字符串看起来更像是缓冲区溢出错误。您可能会覆盖null终止符,因此当打印(或稍后使用)字符串时,它会一直运行直到找到它,检查随机程序内存直到它到达那里。

检查所有字符串操作是否正确。

答案 1 :(得分:1)

你可能没有在convert(char *)函数的'post'末尾(在最后一个敏感字符之后)添加'\ 0'字符。这是我能想到的一个原因。 尝试将完整的字符串设置为'\ 0'之前:

memset(post, 0, tamP);

应该这样做。