【问题标题】:(C/C++) fscanf_s Missing Integer Arguments error When Reading in Chars to Array from txt file(C/C++) fscanf_s Missing Integer Arguments error when reading in Chars to Array from txt file
【发布时间】:2020-03-12 19:23:40
【问题描述】:

第一次发帖,我会尽我最大的努力遵循指导方针并进行正确的设置。如果需要任何东西,请告诉我!

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% 的工作,需要一些帮助!任何澄清,只要问!明天晚上交这个:)

【问题讨论】:

  • 欢迎来到 Stack Overflow。请花点时间浏览The Tour,并参考Help Center 的材料,了解您可以在这里询问的内容和方式。发布minimal reproducible example 尤为重要。
  • 好的!我会在几分钟后编辑,现在得到一个不那么凌乱的版本!

标签: c++ c arrays string scanf


【解决方案1】:

谢谢约翰·兹温克; 在专门使用 fscanf_s 时,我最终通过在参数中添加 SIZE 来实现它。答案如下所示:

    while (!feof(fp))
{
    fscanf_s(fp, "%c", &code[i], SIZE); //SIZE was added here!
    i++;
}

感谢您的帮助!

【解决方案2】:

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

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

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

【讨论】:

  • 好吧,我知道你在做什么。这看起来像什么?我无法确定我将 SIZE 放在此语句中的哪个位置,并最终转向 CRT_SECURE_NO_WARNINGS 以获取其他错误,但这仍然会弹出。有什么提示吗?
猜你喜欢
  • 2022-12-27
  • 2021-03-09
  • 1970-01-01
  • 2017-06-29
  • 2022-11-20
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多