在C中指定文件扩展名

在C中指定文件扩展名,c,file-io,C,File Io,对于我的项目,我从用户那里获得一个文件名,并将其发送到一个函数,以创建实际的文件/打开它(如果它已经存在)。我遇到的问题是,当编译器创建文件时……实际上就是一个文件。通过命令行接收名称后,如何指定文件类型 从main: printf("Enter the name of the file in which you wish to create\nor if you know the name of an exisiting file, enter that file name:\n"); sca

对于我的项目,我从用户那里获得一个文件名,并将其发送到一个函数,以创建实际的文件/打开它(如果它已经存在)。我遇到的问题是,当编译器创建文件时……实际上就是一个文件。通过命令行接收名称后,如何指定文件类型

从main:

printf("Enter the name of the file in which you wish to create\nor if you know the name of an exisiting file, enter that file name:\n");
scanf(" %s", FNAME);
File = FileOpen(FNAME);
职能:

FILE *FileOpen(char* FNAME) {
FILE* pFile;
pFile = fopen(FNAME,"rb+");
if (!pFile)
  pFile = fopen(FNAME,"wb+");
return pFile;

下面是我在一位朋友的帮助下进行了一些挖掘之后所做的事情

sprintf(FNAME, "%s%s", FNAME, ".dat");
感谢所有回复

尝试以下内容:

pFile=fopenpath\FNAME.extension,rb+

在这里输入文件的绝对路径、文件名及其在qotes中的扩展名

如果文件位于同一目录中,则不需要路径! 前- 文件*fp; fp=fopenfile.txt,r

此处file.txt与程序文件位于同一个目录中。

include 包括 int main { 文件*fp

fp=fopen file.txt,w+

fprintffp,%s%s%s%d,我们,在2014年

fclosefp

返回0; }


//这段代码将创建一个名为file.txt的txt文件,并将包含我们在2014年的情况

这实际上就是一个文件。而不是什么?我不理解这里的问题。你所说的类型是什么意思?从你提供的语句中可以看出,你正在接受scanf语句中的文件。有问题的是,您的意思是可以从命令行接受文件名。完全令人困惑。你的意思是什么,一个文件?你希望它是什么?FileOpen打开一个文件,正如它在名称中所说的那样。您需要做的是检查FNAME,看看它是否包含扩展名。没有标准的方法,但是strchr或strrchr是很好的起点。如果它包含扩展名,请使用它。如果找不到扩展名,则需要提供您选择的默认扩展名。strcat也是一个很好的起点。include int main{FILE*fp;fp=fopen FILE.txt,w+;fprintffp,%s%s%d,We,are,in,2014;fclosefp;return0;}//此代码将创建一个名为FILE.txt的txt文件,并将包含您在2014年的答案与什么相关?它似乎在解释如何打开文件流。我不记得这是上面的问题。另外-请不要在评论中包含代码。编辑您的答案,并以正确的格式包含代码。如果你不知道如何格式化答案,其他人会帮助,我会帮助,但请阅读回答问题的帮助。我以为我问了一个相当简单的问题,但我想不是哈。我想实际上我所要做的就是从用户那里获取一个字符串,并在给定字符串的末尾添加一个扩展名,然后将其传递给fopen