推送方法导致循环运行两次?

时间:2014-03-19 10:42:38

标签: c stack

所以我试图在C中实现一个Stack,我的push方法似乎是在主运行中使我的循环两次。我的意思是我有:

int main(int argc, char *argv[]){
    int i;
    for(int i = 0; i < 10; i++)
    push(getchar());
}

然后我会在程序终止之前推送5次。如果我在那里放一个print语句,例如:

printf("i: %i ", i);

然后我得到myInput i=0 i=1 myInput等等。

问题似乎在我的推送方法中,但我不确定它有什么问题。我是malloc的新手,所以如果问题很明显,我很抱歉。我无法弄清楚造成这种情况的原因。

我的代码:

struct Node{
    char c;
    struct Node *nextNode;
};

struct Node *head = NULL;

char pop(){ ... }
int empty(){ ... }

void push(char ch){

    struct Node *next = (struct Node *) malloc(sizeof(struct Node));
    next->c = ch;
    next->nextNode = head;
    head = next;
}

我确定这里有多个问题,但我不是要求免费的代码修复,我只是想解决这个问题。

非常感谢任何提示或建议,并提前感谢您。

编辑:user2802841和luk32是对的,我在字符中传递的方式意味着换行符与实际字符一起使用,使其看起来像是在跳过。添加一个额外的getchar()来使用换行解决了这个问题,非常感谢你。

0 个答案:

没有答案