使用Visual Studio 2017时出错:fscanf_s

时间:2017-10-20 17:55:54

标签: c++

char option;
FILE *fp;
errno_t err;
err = fopen_s(&fp, "../AVL Trees/input.txt", "r");

while (!feof(fp))
{
    fscanf_s(fp, "%c", &option);   //error is here
    ... 
}

这适用于AVL Trees项目。 我无法理解为什么我会收到这个错误:"没有足够的参数传递格式",我是否错过了什么?

编辑:

1>e:\visual studio projects\avl trees\avl trees\main.cpp(27): warning C4473: 'fscanf_s' : not enough arguments passed for format string
1>e:\visual studio projects\avl trees\avl trees\main.cpp(27): note: placeholders and their parameters expect 2 variadic arguments, but 1 were provided
1>e:\visual studio projects\avl trees\avl trees\main.cpp(27): note: the missing variadic argument 2 is required by format string '%c'
1>e:\visual studio projects\avl trees\avl trees\main.cpp(27): note: this argument is used as a buffer size

1 个答案:

答案 0 :(得分:0)

来自C标准(K.3.5.3.2 fscanf_s函数)

  

4 fscanf_s函数等同于fscanf,除了 c,   s,[转换说明符适用于一对参数(除非   赋值抑制由*表示。第一个   参数与fscanf相同。这个论点是立即的   在参数列表中跟随第二个参数,它具有类型   rsize_t并给出指向的数组中的元素数   这对的第一个参数。如果第一个参数指向a   标量对象,它被认为是一个元素的数组。

所以你应该使用这样的电话

fscanf_s(fp, "%c", &option, 1);