是否存在以下情况? (我试图提取变量的值,并根据存储在数组中的文本创建一个文件。)
#include <stdio.h>
int main()
{
char a = "a";
FILE *out;
out = fopen( "%s.txt", a, "w" );
fclose(out);
return 0;
}
由于
答案 0 :(得分:9)
是否存在下列情况有效的情况?
没有
不要做出假设! 请改为阅读手册。这真的很值得。
char buf[0x100];
snprintf(buf, sizeof(buf), "%s.txt", random_string);
FILE *f = fopen(buf, "r");
答案 1 :(得分:4)
不直接。但你可以间接地做到如下(或类似的东西)......
#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;
}
答案 2 :(得分:1)
您不能使用字符串文字指定char变量。您应该将代码更改为:
char a[] = "a";
另一个问题是fopen
函数只获得2个参数,但是你传递了3个。
答案 3 :(得分:1)
不,那不行。您需要使用sprintf()
之类的中间步骤来组合要传递给fopen()的字符串。
答案 4 :(得分:0)
您需要详细了解fopen():
FILE * fopen(const char * filename,const char * mode);
打开文件
打开名称在参数filename中指定的文件,并将其与a关联 可以通过返回的FILE指针在将来的操作中识别的流。
此后如何修复您的代码
#include <stdio.h>
main(){
char a = 'a';
char filename[64];
FILE *out;
sprintf(filename, "%c.txt", a)
out = fopen( filename, "w");
fclose(out);
return 0;
}
答案 5 :(得分:0)
不,你必须事先将sprintf()转换为字符串,然后像往常一样调用fopen(name,mode)。
答案 6 :(得分:0)
我知道这个帖子已经关闭,但@很快的评论告诉我一个方法。
#include<stdio.h>
#include<stdlib.h>
void main()
{
FILE *fs;
char c[]="Dayum.csv";
fs = fopen( ("%s", c),"a");
if (fs == NULL)
printf("Couldn't open file\n");
for (int i=0; i<5; i++)
for (int j=0; j<5; j++)
fprintf(fs, "%lf,%lf\n",i,j);
fclose(fs);
}
由于fopen使用2个参数,我们可以将其伪装为单个参数 -
fs = fopen( ("%s", c), "a" )
但是,如果您决定在
中添加文件扩展名char c[]="Dayum";
fs = fopen( ("%s.csv",c), "a")
它没有用。系统创建一个名为&#34; Dayum&#34;它被处理为普通文本文件,而不是csv格式。
注意 - 如果您可以将扩展名的值存储在一个文件中,将文件名的值存储在另一个文件中,则将它们连接起来编写一个filename.extension数组,这也是为了达到目的。
答案 7 :(得分:0)
为了解决这个问题,我做到了:
#include <string.h>
int main()
{
char fileName = "a";
FILE *out;
char fileToOpen[strlen(fileName) + 5];
// strlen(fileName)+5 because it's the length of the file + length of ".txt" + char null
strcpy(fileToOpen, fileName);
// Copying the file name to the variable that will open the file
strcat(fileToOpen, ".txt");
// appending the extension of the file
out = fopen( fileToOpen, "w" );
// opening the file with a variable name
if(out == NULL)
{
perror("Error: ");
exit(EXIT_FAILURE);
}
fclose(out);
return EXIT_SUCCESS;
}
答案 8 :(得分:-2)
不,fopen()
返回FILE*
FILE *fopen(const char *path, const char *mode);
<强> + 强>
char a [] =“a”;
答案 9 :(得分:-2)
strcpy(a, ".txt");
fopen(a, "w");
可能会按照您的要求做。