繁体   English   中英

(C/C++) fscanf_s Missing Integer Arguments 从 txt 文件中读取字符到数组时出错

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

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

VS 2019 中的错误是“C6064: Missing integer 参数到 'fscanf' 对应于转换规范 '2'。” 下面的代码在我的代码中断的部分给出。 到目前为止,rest 没有问题并且可以正确编译。 出错的行是 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,并将其中的每个字符保存到一个字符串数组中,然后将该数组与“加密消息”进行比较以获得答案。 该代码编译了正确的答案,但我无法将此错误传递给 go 。 出现的另一条消息是“'fscanf':没有足够的 arguments 为格式字符串传递”但我假设字符串数组中的字符只需要 %c?

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

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

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

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

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

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

谢谢您的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM