如何用c语言声明文件名?

如何用c语言声明文件名?,c,C,我有一个c模块: #include "stdafx.h" #include "targetver.h" #include "libavutil\mathematics.h" #include "libavcodec\avcodec.h" FILE fileName; 我没有文件名 我有一个初始化函数: void init(const char *filename) { fileName = filename; avcodec_register_all(); prin

我有一个c模块:

#include "stdafx.h"
#include "targetver.h"

#include "libavutil\mathematics.h"
#include "libavcodec\avcodec.h"

FILE fileName;
我没有文件名

我有一个初始化函数:

void init(const char *filename)
{
    fileName = filename;
    avcodec_register_all();
    printf("Encode video file %s\n", fileName);
所以我做了fileName=fileName; 我这样做的原因是我有另一个函数名为start():

最后一个错误:7 IntelliSense:不存在从“FILE”到“const char*”的适当转换函数


我只想声明全局文件名变量,以便在所有位置使用它。

FILE
是一种类型,用于表示打开的文件(它包含文件句柄、文件中的位置等)。不能将
char*
存储在
FILE
类型的变量中,因为它们是不同的类型

您要做的是存储一个文件名。文件名是一个字符串。改用
常量字符*
。您的错误消息确切地告诉您:“无法将字符串转换为文件”


阅读这些错误并试图理解它们的真正含义可以帮助您解决此类问题。如果编译器抱怨将一种类型转换为另一种类型,这显然表明您对值的类型或试图分配给它的变量感到困惑。

FILE
是一种类型,用于表示打开的文件(它包含文件句柄、文件中的位置等)。不能将
char*
存储在
FILE
类型的变量中,因为它们是不同的类型

您要做的是存储一个文件名。文件名是一个字符串。改用
常量字符*
。您的错误消息确切地告诉您:“无法将字符串转换为文件”


阅读这些错误并试图理解它们的真正含义可以帮助您解决此类问题。如果编译器抱怨将一种类型转换为另一种类型,这显然表明您对值的类型或试图将其分配给的变量感到困惑。

文件变量不应该是指针吗?几乎可以肯定,字符串文字中的不相关但未被替换的反斜杠让我感到不安。有没有理由不使用
/
而不是“\”作为目录分隔符?(在我所知道的每个桌面操作系统中都可以使用,包括Windows。)文件
变量不应该是指针吗?几乎可以肯定,字符串文本中不相关但未被替换的反斜杠让我感到不安。有没有理由不使用
/
而不是“\”作为目录分隔符?(适用于我所知道的所有桌面操作系统,包括Windows。)
void start()
{
    /* open it */
    if (avcodec_open2(c, codec, NULL) < 0) {
        fprintf(stderr, "Could not open codec\n");
        exit(1);
    }
//    f = fopen(filename, "wb");
    errn = fopen_s(&f,fileName, "wb");

    if (!f) {
        fprintf(stderr, "Could not open %s\n", fileName);
        exit(1);
    }
}
6   IntelliSense: no operator "=" matches these operands
        operand types are: FILE = const char *
Error 1 error C2440: '=' : cannot convert from 'const char *' to 'FILE'