首页 > 解决方案 > (C/C++) fscanf_s Missing Integer Arguments error when reading in Chars to Array from txt file

问题描述

第一篇文章,将尽我所能遵循指导方针并进行适当的设置。如果需要任何东西,请告诉我!

VS 2019 中的错误是“C6064:'fscanf' 缺少对应于转换指定器'2'的整数参数。” 下面的代码在我的代码中断的部分给出。到目前为止,其余的都很好并且可以正确编译。出错的行是 fscanf。

完整代码:https ://pastebin.com/DCgEa64g (请原谅任何缺少的变量,它们已被处理!)

fp = fopen("codefile.txt", "r");
if (fp == NULL)
{
    printf("could not open codefile.txt\n");
    return 1;
}

i = 0;
while (!feof(fp))
{

    fscanf(fp, "%c", &code[i]);
    i++;
}

我发布的这一部分是我扫描一个文件 codefile.txt,并将其中的每个字符保存到一个字符串数组中,然后将该数组与“加密消息”进行比较以获得答案。该代码编译了正确的答案,但我无法让这个错误消失。出现的另一条消息是“'fscanf':没有为格式字符串传递足够的参数”,但我假设字符串数组中的字符只需要 %c?

这也将 codefile.txt 中的每个元素单独放入代码数组中,这是预期的。我完成了这项任务的其余部分,所以我根本不要求有人为我做任何其他事情。我很乐意发布任何其他需要的代码!目标是读取带有数字的单独消息文件,将它们放入数组中,解扰并与 codefile.txt 字符串进行比较并获得结果。我完成了 95% 的工作,需要一些帮助!任何澄清,只要问!明天晚上交这个:)

标签: c++carraysstringscanf

解决方案


您的实际代码(在链接中,而不是在您的问题中)使用fscanf_s(),其文档说:

更安全的函数(具有 _s 后缀)与其他版本之间的主要区别在于,更安全的函数需要将每个 c、C、s、S 和 [ 类型字段的字符大小作为参数传递紧跟在变量之后。有关详细信息,请参阅 scanf_s、_scanf_s_l、wscanf_s、_wscanf_s_l 和 scanf 宽度规范。

您的错误在于未能提供额外的尺寸参数。


推荐阅读