scanf打印到控制台?

时间:2018-09-25 00:05:58

标签: c

我正在编写一个程序来测试多个DFA和NFA。这是我的代码:

char input[256];
DFA dfa = oneA();
while(1){
    printf("\nEnter an input: ");
    scanf("%s", input);
    if (strcmp(input, "quit") == 0){
        break;
    }
    printf("\nResults for input \"%s\": ", input);
    printf("%s", DFA_execute(dfa, input) ? "true" : "false");
}

这是我期望的行为:

Testing DFA that recognizes exactly "zxy"
Enter an input: *zxy*
Results for input "zxy": true

其中的星号仅指示用户输入的部分。 但是,最终发生的事情是这样:

Testing DFA that recognizes exactly "zxy"
Enter an input: *zxy*
zxy

Results for input "zxy": true

我的两个打印语句之间的某件事是将输入和换行符打印到控制台。奇怪的是,它似乎是scanf,因为对scanf的多次调用将复制此行为。只需以下代码:

#include <stdio.h>

int main() {
    char input[256];
    scanf("%s", input);
    printf("%s", input);
}

产生此输出:

*test*
test
test

我不确定为什么为什么我不认为scanf应该输出任何东西。谁能帮我弄清楚发生了什么事?

1 个答案:

答案 0 :(得分:0)

我不知道是什么原因导致的,但是它似乎是特定于IDE的(我正在使用CLion)。使用gcc从命令行编译不会重现该问题。