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

时间:2015-01-25 02:53:16

标签: c printf scanf

好的,所以我试图在VS中做一个基本的程序。输入一个数字然后打印出来。始终打印1。

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

2 个答案:

答案 0 :(得分:2)

您正在将scanf_s()的返回值分配给变量n,这意味着如果成功读取,程序将打印1

你应该做的是

int numberOfItemsMatched;
int readValue;

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

我希望变量名称是自我解释的,使用这种名称总是一个好主意。

答案 1 :(得分:0)

scanf的返回类型是读取的项目数。因此,如果scanf在读取项目时成功,则返回一个在此处分配给n的项目。因此输出为1.因此单独声明n和scanf。