((C / C ++)fscanf_s从txt文件读取字符到数组时,缺少整数参数错误

问题描述 投票:0回答:2

[第一篇文章,将尽我所能遵守指南,并进行适当的设置。如果有任何需要,请告诉我!

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++ c arrays string scanf
2个回答
0
投票

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

更安全的函数(具有_s后缀)与其他版本之间的主要区别是,更安全的函数要求每个c,C,s,S和[type字段的字符大小都以紧随变量之后的参数。有关更多信息,请参见scanf_s,_scanf_s_l,wscanf_s,_wscanf_s_l和scanf宽度规范。

您的错误是未能提供额外的size参数。


0
投票

谢谢约翰·兹温克;我最终通过在专门使用fscanf_s时将SIZE添加到参数中来使其工作。答案看起来像这样:

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

感谢您的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.