C fopen用变量名调用?

Tri*_*n V 4 c file-io

以下情况是否有效?(我试图提取变量的值,并根据存储在数组中的文本创建一个文件.)

#include <stdio.h>

int main()
{
    char a = "a"; 
    FILE *out;
    out = fopen( "%s.txt", a, "w" );
    fclose(out);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 9

以下情况是否有效?

没有.


不要做假设!请改为阅读手册.这真的很值得.

char buf[0x100];
snprintf(buf, sizeof(buf), "%s.txt", random_string);
FILE *f = fopen(buf, "r");
Run Code Online (Sandbox Code Playgroud)


K S*_*iel 7

不直接。但是您可以按如下方式间接进行(或任何类似的操作)...

#include <stdio.h>

int main()
{
    char* a = "a"; 
    char* extension = ".txt";
    char fileSpec[strlen(a)+strlen(extension)+1];
    FILE *out;

    snprintf( fileSpec, sizeof( fileSpec ), "%s%s", a, extension );

    out = fopen( fileSpec, "w" );
    fclose(out);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)


awe*_*oon 1

您不能为 char 变量分配字符串文字。您应该将代码更改为:

char a[] = "a";
Run Code Online (Sandbox Code Playgroud)

另一个问题是该fopen函数只获取 2 个参数,但您传递了 3 个参数。