c - scanf 之后的 printf 始终显示 1(相同的意外值)

标签 c printf scanf

好吧,我正在尝试在 VS 中编写一个基本程序。输入一个数字,然后打印出来。始终打印 1。

int main(){
    printf("Enter an integer: ");
    int n = scanf_s("%d", &n);
    printf("%d", n);
}

最佳答案

您将从 scanf_s() 返回的值分配给变量 n,这意味着程序将在以下情况下打印 1:读取成功。

你应该做的是

int numberOfItemsMatched;
int readValue;

numberOfItemsMatched = scanf_s("%d", &readValue);
if (numberOfItemsMatched == 1)
    printf("%d\n", readValue);

我希望变量名称是不言自明的,并且使用这种名称总是一个好主意。

关于c - scanf 之后的 printf 始终显示 1(相同的意外值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28132729/

相关文章:

c - 释放 C 库中的静态结构

c - 为什么将 printf 的结果传递给另一个 printf 有效?

c - STM32无法使用HAL_UART_Recceive_IT接收数据

c - 无法正确排序字符串数组

c - 小数精度与 printf()、fprintf() 格式 %g 与 %f 中的位数

C : files manipulation Can't figure out how to simplify this code with files manipulation

c - 卡在 c 程序中如何在进程中间停止 scanf

C++ 使用 std::sscanf 和 std::string

c - 带有 SDL2 的 Makefile C

c - 当我尝试使用 "%lu"而不是 32 位嵌入式平台上的数字打印 u64 变量时,为什么会得到 "%llu"?