当前位置: 首页 > 知识库问答 >
问题:

如何在c语言中声明文件名?

金嘉言
2023-03-14

我有一个c模块:

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

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

FILE fileName;

我做了File fileName;

我有一个初始化函数:

void init(const char *filename)
{
    fileName = filename;
    avcodec_register_all();
    printf("Encode video file %s\n", fileName);

所以我做了fileName=filename;我这样做的原因是我有另一个函数,我称为start():

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);
    }
}

一开始我有文件名,但它没有找到它,所以我想用fileName代替。但我现在得到一些错误:

在这一行:fileName=fileName;在=符号上,我得到红线错误:

错误1错误C2440:“=”:无法从“常量字符*”转换为“文件”

然后在这行上:errn=fopen\s(

错误2错误C2065:“文件名”:未声明的标识符

这一行的文件名上有相同的错误号2:fprintf(stderr,“无法打开%s\n”,文件名);

然后,文件名=文件名出现另一个错误:

6   IntelliSense: no operator "=" matches these operands
        operand types are: FILE = const char *

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

所有我想做的是声明全局fileName变量在所有地方使用它。

共有1个答案

邹宏峻
2023-03-14

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

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

Error 1 error C2440: '=' : cannot convert from 'const char *' to 'FILE'

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

 类似资料:
  • 例如:在下面的代码中,如何以及在何处存储用于比较的数字“10”? 请原谅我没有提供足够的细节。如果我们扫描并从用户那里获取x,我们就知道如何为x分配内存,而不是直接用5初始化x。但是,如何为没有存储在任何变量中的字面数“10”分配内存呢?

  • 作为示例,我们的高级开发人员编写了以下代码: (还有一个“Token.cs”类,它只有一个name属性作为string。) 我们解码的JWT负载如下所示: 我遇到的问题是,当我尝试按“sub”类型获取索赔时,什么都没有出现(而且它不在列表中)。但“sub”似乎是一个极为常见的说法。 我做错了什么?我能拿到主题(“sub”)索赔吗? 编辑:适用于推荐系统。IdentityModel-我在尝试使用它时

  • 主要内容:普通函数声明(定义),函数的返回值,调用函数函数构成了代码执行的逻辑结构,在Go语言中,函数的基本组成为:关键字 func、函数名、参数列表、返回值、函数体和返回语句,每一个程序都包含很多的函数,函数是基本的代码块。 因为Go语言是编译型语言,所以函数编写的顺序是无关紧要的,鉴于可读性的需求,最好把 main() 函数写在文件的前面,其他函数按照一定逻辑顺序进行编写(例如函数被调用的顺序)。 编写多个函数的主要目的是将一个需要很多行代码的复

  • 能够在C语言编译期间创建和操作字符串有几个有用的应用。虽然在C语言中创建编译时字符串是可能的,但是这个过程非常麻烦,因为字符串需要声明为一个可变的字符序列,例如。 字符串串联、子串提取等操作可以很容易地实现为对字符序列的操作。是否可以更方便地声明编译时字符串?如果没有,工作中是否有允许方便地声明编译时字符串的建议? 理想情况下,我们希望能够声明编译时字符串,如下所示: 或者,使用用户定义的文字,

  • 1. 函数的声明和定义 函数头与函数体两部分组成。其中函数头部分包含函数的返回值类型,函数名,函数的参数;函数体部分由实现函数功能的一条至多条语句组成。 返回值类型 函数名(函数) { 程序语句 } 使用函数要先定义再使用。 2. 示例程序 #include <stdio.h> int week(int w) { switch (w) { case 1:

  • 这篇指南的目的是教你如何书写高质量的TypeScript声明文件。 在这篇指南里,我们假设你对TypeScript已经有了基本的了解。 如果没有,请先阅读TypeScript手册 来了解一些基本知识,尤其是类型和命名空间部分。 这篇指南被分成了以下章节。 结构 结构一节将帮助你了解常见库的格式以及如何为每种格式书写正确的声明文件。 如果你在编辑一个已经存在的文件,那么你可能不需要阅读此章节。 如果