如何用c语言声明文件名?
我有一个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
#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'