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
答案 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);