C中的VS2013文件打开错误

时间:2015-02-09 03:58:45

标签: c

我使用vs2013。

#include <stdio.h>

void main(){

    FILE *f;
    char fname[] = "17_1.txt";

    if ((f = fopen_s(f,fname, "r+")) == NULL)
    {
        fprintf(stdout, "can't open the file\n");
        exit(1);
    }
    while (!feof(f))
    {
        fscanf_s(f, "%d %s %d %d\n");
        fprintf(stdout, "%d %s %d %d \n");
    }

    fclose(f);
}

但是错误4错误C4700:使用了未初始化的局部变量'f' 我看见-_- 我该如何改变?

1 个答案:

答案 0 :(得分:2)

您似乎对fopen_sfopen感到困惑。 fopen_s的签名是:

errno_t fopen_s( 
   FILE** pFile,
   const char *filename,
   const char *mode 
);

fopen的签名是:

FILE *fopen(const char *restrict filename, const char *restrict mode);

分别使用这两个函数的方法是:

FILE* f = NULL;
errno_t e;

if ((e = fopen_s(&f, fname, "r+")) != 0)
{
    fprintf(stdout, "can't open the file\n");
}

if ((f = fopen(fname, "r+")) == NULL)

如果发生错误,fopen设置errno