Scanf导致C程序崩溃

4
这个简单的问题导致整个程序在第一个输入时崩溃。如果我去掉输入,程序就可以正常运行,但一旦在代码中添加scanf并输入,程序就会崩溃。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXEMPS 3


// stub program code
int main (void){
    char answer;

    do
    {

        printf("\n Do you have another(Y/N): ");
        scanf("%c", answer);
    }while(answer == 'Y' || answer == 'y');

    getchar();
    printf("  Press any key ... ");
    return 0;
} // main

“fflush(stdin)”(或任何其他最后一次操作为输入的流)在标准中未定义。如果您正在使用Windows,则该操作是明确定义的...但是,如果您的代码将来可能会在任何其他操作系统上编译,那么您现在可以避免错误。不要使用“fflush(stdin)”! - pmg
谢谢您提供有关fflush的信息,我的教授让我们使用它。 - BKCOHEN
嗯...相应的标准惯用语是int flushstdin(void) { int ch; while (((ch = getchar()) != '\n') && (ch != EOF)) /* void */; return ch == EOF ? EOF : 0; }。与教授交流并使用它。 - pmg
2个回答

11

你必须传递变量的地址给scanf:

 scanf("%c", &answer);

4

使用"&answer"。并且去掉多余的"fflush()"命令...

更好的方法是,替换为"answer = getchar()"。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接