【问题标题】:C error C2040 'f': 'errno_t' differs in levels of indirection from 'FILE *'C 错误 C2040 'f': 'errno_t' 与 'FILE *' 的间接级别不同
【发布时间】:2016-07-22 10:22:26
【问题描述】:

任何帮助将不胜感激。我正在编写此代码,但是我不断收到此错误,我不确定如何处理它。我在网上查看了有关 C2040 的信息,但它仍然无法帮助我解决问题。

#include "stdafx.h"
#include "stdlib.h"

struct Employer
{
char name[50];
int house;
int age;
};

int main()
{
struct Employer employee1;

printf("Employee information:\n\n");

printf("Please input your house number: ");
scanf_s("%d", &employee1.house);

printf("\n");

printf("Please enter your age: ");
scanf_s("%d", &employee1.age);

printf("Please input your name: ");
scanf_s("%s\n", &employee1.name, 50);

getchar();
getchar();

{
    FILE *f;
    errno_t f = fopen_s(&f, "Employee details.txt", "w");

    printf("Employees' name: %s", employee1.name);
    printf("Employees' house number: %d", employee1.house);
    printf("Employees' age: %d", employee1.age);
}
return(0);
}

【问题讨论】:

  • 再次查看您的代码,一次又一次,直到您看到为止。我怀疑这是你得到的唯一错误,你可能应该得到一些关于重新定义 f 的信息。
  • 阅读How to Ask 并正确格式化您的代码。
  • 这个scanf_s("%s\n", &employee1.name, 50); 也不好看。
  • 我正在使用视觉工作室,并说 scanf() 不安全

标签: c


【解决方案1】:

您不能将名称 f 用于 errno_t,因为您已经将其用于 FILE*

所以把errno_t f = fopen_s(....改成errno_t error = fopen_s(....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 2018-10-09
    相关资源
    最近更新 更多