Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的错误消息无效二进制文件_C - Fatal编程技术网

C中的错误消息无效二进制文件

C中的错误消息无效二进制文件,c,C,我得到一个错误: 将无效操作数键入二进制(&A)并具有“int*”和“int” 这是我的节目。问题发生在第34行或fscanf num1处 在fscanf语句中,不能用逗号分隔参数。它们应该是: fscanf (infile, " %i %i %i %f %s", &nums, &num1, &num2, &fcost, name); 及 请注意,name是一个数组,当您将其传递给fscanf时,它将转换为指针。因此,需要删除&operator。如注释中所述,名

我得到一个错误:

将无效操作数键入二进制(&A)并具有“int*”和“int”

这是我的节目。问题发生在第34行或fscanf num1处


在fscanf语句中,不能用逗号分隔参数。它们应该是:

fscanf (infile, " %i %i %i %f %s", &nums, &num1, &num2, &fcost, name);

请注意,name是一个数组,当您将其传递给fscanf时,它将转换为指针。因此,需要删除&operator。如注释中所述,名称的格式应为%c

另见:

我还建议对main函数使用标准定义。主{..}已过时,应避免使用。
相反,您可以将其编写为int mainit。

我发现了一些问题。首先,没有逗号来分隔scanf的参数

接下来,fscanf的最后一个参数应为%s格式,且传递名称时不带&

接下来,feof不是控制循环的方法,无论如何,您应该检查fscanf的返回值

您还为printf中应为%d的区域使用了错误的格式说明符%c

最后使用%d或%i格式说明符发送。除非您希望用户输入十进制以外的其他数字,否则请坚持使用%d

所以我建议循环应该是

while (fscanf (infile, " %d %d %d %f %s", &nums, &num1, &num2, &fcost, name) == 5)
{
    int area = nums * 200 + num1 * 300 + num2 * 450;
    float cost = fcost + area * 75.00;
    double income = 12 * (nums * 450 + num1 * 550 + num2 * 700);
    float payback = cost / income;
    fprintf (prnt, "%-10s %5f %7d %9.2f\n", name, payback, area, cost);
}

寻求调试帮助的问题此代码为什么不起作用?必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请看:如何创建一个最小的、完整的、可验证的示例。谢谢你,正是这些小错误让我感到困惑。那么声明main int是一件新事情?我的教授很老了,他让我们使用watcom,但我改用eclipse,谢谢你的帮助。@AnthonyBahlman这并不是什么新鲜事。至少从1989年第一个C标准开始就有了!
fscanf (infile, " %d %d %d %f %s", &nums, &num1, &num2, &fcost, name);
while (fscanf (infile, " %d %d %d %f %s", &nums, &num1, &num2, &fcost, name) == 5)
{
    int area = nums * 200 + num1 * 300 + num2 * 450;
    float cost = fcost + area * 75.00;
    double income = 12 * (nums * 450 + num1 * 550 + num2 * 700);
    float payback = cost / income;
    fprintf (prnt, "%-10s %5f %7d %9.2f\n", name, payback, area, cost);
}