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

(C/C++) fscanf_s Missing Integer Arguments error When Reading in Chars to Array from txt file

本文关键字:数组 读取 错误 参数 整数 字符 C++ fscanf 文件 txt      更新时间:2023-10-16

First Post,我将尽我所能遵循指导方针,并使其成为一个正确的设置。如果需要什么,请告诉我!

VS 2019中的错误为"C6064:缺少与转换说明符"2"对应的"fscanf"的整数参数。"下面的代码是在我的代码中断的部分给出的。到目前为止,其余部分都很好,并且编译正确。错误的行是fscanf。

完整代码:https://pastebin.com/DCgEa64g(原谅任何遗漏的变量,它们已经被处理了!(

fp = fopen("codefile.txt", "r");
if (fp == NULL)
{
printf("could not open codefile.txtn");
return 1;
}
i = 0;
while (!feof(fp))
{
fscanf(fp, "%c", &code[i]);
i++;
}

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

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

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

更安全的函数(带有_s后缀(与其他版本之间的主要区别在于,更安全的功能要求每个c、c、s、s和[type字段的字符大小作为变量后的参数立即传递。有关更多信息,请参阅scanf_s、_scanf_s_l、wscanf_s,_wscanf_s-l和scanf Width Specification。

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

感谢John Zwinck;当我专门使用fscanf_s时,我最终通过在参数中添加SIZE来实现它。答案如下:

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

谢谢你的帮助!