C程序在接受scanf()输入之前终止

时间:2019-10-01 06:22:20

标签: c input scanf

尽管我知道该程序的布局很麻烦,但我认为我的程序在scanf()行中遇到了麻烦。由于某种原因,在输入metricConversion()函数之后。 scanf()行已打印,但是程序在输入之前退出并终止...我不明白为什么会这样...

#include <stdio.h>

char inputtedChar;
int inputtedInt;

int metricConversion(){
    scanf("Press K for conversion from Kelvin to Celsius %c", &inputtedChar);

    if(inputtedChar == 'K'){
        //do Something
    } else { return 0; }
}

int main() {
    printf("Press 0 to enter conversion function!");
    scanf("%d", &inputtedInt);

    if (inputtedInt == 0) {
        metricConversion();
    }
}

更重要的是,有人可以解释为什么scanf()如此运作吗?最好的选择是什么,这样我就不会再遇到这个问题了?

1 个答案:

答案 0 :(得分:3)

if ($hits[0]<= $varlinkhits) { $buttonlink="$varlinkone"; } else { $buttonlink="$varlinktwo"; } ?> <?php //creating short code ?> <button onclick="onclickRedirect()">redirect</button> <script> function onclickRedirect(){ window.location.href = "<?php echo $buttonlink ?>"; } </script> <?php } session_start(); function link_button_function() { global $buttonlink; $_SESSION["sessionlink"] = $buttonlink; return '<a href=" '. $_SESSION["sessionlink"] .' ">Join Whatsapp Group</a>'; } add_shortcode('button_link', 'link_button_function'); 更改为:

scanf("Press K for conversion from Kelvin to Celsius %c", &inputtedChar);

有两个问题。使用printf("Press K for conversion from Kelvin to Celsius "); fflush(stdout); scanf(" %c", &inputtedChar); /* ^ */ /* this space */ 进行提示。并且您需要在printfscanf(扫描集)或%c转换之前使用%[…]中的空格来忽略空格。使用%n将确保在等待输入之前将提示打印在屏幕上。

除非您要用fflush终止打印的字符串,否则也建议在fflush函数的scanf之前使用main


  

'\n'是什么意思?

这不会打印任何内容。这意味着程序需要精确的输入scanf("Press K for conversion from Kelvin to Celsius %c", &inputtedChar);并在输入中读取Press K for conversion from Kelvin to Celsius <SOME_CHAR>。有关更多详细信息,您需要了解正则表达式。