这可能是由于 'scanf_s' 函数在读取字符时对输入缓冲区的处理方式不同。'scanf_s' 函数在读取字符之前会检查输入缓冲区中是否存在足够的字符,并且会在读取之前自动跳过前导空白字符(如换行符)。这可以确保 'scanf_s' 函数读取到有效的字符。

然而,在您的代码中,当 'scanf_s' 函数在 'case 5' 中被调用之前,可能已经有一个换行符留在输入缓冲区中。这样,'scanf_s' 函数会立即读取到该换行符,而不等待您的输入。这是为什么您需要在 'scanf_s' 函数之前添加一个空白字符来跳过前一个换行符。

在单独的 'main' 函数中运行该代码时,可能没有先前的输入操作,因此输入缓冲区中不会存在换行符。这就解释了为什么在单独运行时不会遇到此问题。

为了确保代码的可移植性和正确性,您应该始终在使用 'scanf_s' 函数读取字符之前添加空白字符,以跳过任何潜在的前导空白字符。

解决 C 语言中 scanf_s 函数不等待输入字符的问题

原文地址: http://www.cveoy.top/t/topic/pgG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录