fopen如何在当前目录下生成文件?

时间:2022-06-08 12:53:53
char curpath[1024]={0};
GetCurrentDirectory(sizeof(curpath),curpath)
SetCurrentDirectory(curpath);
strcat(curpath,"test.txt");
fopen(curpath,"a");

为什么手动传参数总是生成在C:\Documents and Settings\user\下

怎样才能生成在当前运行程序目录下。

13 个解决方案

#1


fopen("filename","r");这样就使当前目录了。

#2


我要在当前目录下生成文件,这个文件事先并不存在,并且需要往里面写东西

#3


fopen("filename","w");
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件,
如果当然不存在,则生成该文件。

#4



#include<stdio.h>
void main()
{
FILE *fp;
int i;
fp=fopen("test.txt","w");/*答案存于当前目录下的test.txt文件中*/
for(i=0;i<5;i++)
fprintf(fp,"%d\n",i+1);
fclose(fp);
}

#5


可用CFileDialog选择要生成的路径和给文件命名

#6


fopen(filename,"w");
w:Opens an empty file for writing. If the given file exists, its contents are destroyed


fopen(filename,"w+");
w+:Opens an empty file for both reading and writing. If the given file exists, its contents are destroyed.


两个都可以了..

#7


引用 3 楼 shang_shang 的回复:
fopen("filename","w"); 
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件, 
如果当然不存在,则生成该文件。

#8


引用 7 楼 jeff_nie 的回复:
引用 3 楼 shang_shang 的回复:
fopen("filename","w");
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件,
如果当然不存在,则生成该文件。

#9


引用 8 楼 lixun_21 的回复:
引用 7 楼 jeff_nie 的回复:
引用 3 楼 shang_shang 的回复:
fopen("filename","w");
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件,
如果当然不存在,则生成该文件。

#10


多谢各位了
但还是有些问题,我直接在编译器中,将参数提前设定后运行没有问题。
但是直接将文件(参数argv[1])拖拽到可执行程序上,这样生成的文件却在c:\Documents and Settings\user下,

难道fopen对手动和自动会选择不同的路径?
有没有办法,能实现不论怎样传参都生成在当前目录下。。。

#11



DWORD WINAPI GetModuleFileName(
  __in          HMODULE hModule,
  __out         LPTSTR lpFilename,
  __in          DWORD nSize
);
得到程序的目录


BOOL WINAPI SetCurrentDirectory(
  __in          LPCTSTR lpPathName
);
设置程序的运行目录

#12


引用 3 楼 shang_shang 的回复:
fopen("filename","w"); 
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件, 
如果当然不存在,则生成该文件。

3楼说的已经很清楚了,4楼连具体的例子都贴出来了,楼主应该知道怎么修改为自己的东西吧??
加油!~

#13


引用 10 楼 renzu 的回复:
多谢各位了 
但还是有些问题,我直接在编译器中,将参数提前设定后运行没有问题。 
但是直接将文件(参数argv[1])拖拽到可执行程序上,这样生成的文件却在c:\Documents and Settings\user下, 

难道fopen对手动和自动会选择不同的路径? 
有没有办法,能实现不论怎样传参都生成在当前目录下。。。

如果楼主想将argv[1]放到当前目录的话,可以这样。

#include<stdio.h>

int main(int argc,char *argv[])
{
    FILE *fp;
    int i;

    if(argc < 2)
    {
        printf("Input Error!\nUsage:programmename filename\n");
        return -2;
    }

    if((fp = fopen(argv[1],"w")) == NULL)
    {
        printf("Open file error.\n");
        return -1;
    }

    /* 具体的写文件语句*/

    fclose(fp);

    return 0;
}

#1


fopen("filename","r");这样就使当前目录了。

#2


我要在当前目录下生成文件,这个文件事先并不存在,并且需要往里面写东西

#3


fopen("filename","w");
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件,
如果当然不存在,则生成该文件。

#4



#include<stdio.h>
void main()
{
FILE *fp;
int i;
fp=fopen("test.txt","w");/*答案存于当前目录下的test.txt文件中*/
for(i=0;i<5;i++)
fprintf(fp,"%d\n",i+1);
fclose(fp);
}

#5


可用CFileDialog选择要生成的路径和给文件命名

#6


fopen(filename,"w");
w:Opens an empty file for writing. If the given file exists, its contents are destroyed


fopen(filename,"w+");
w+:Opens an empty file for both reading and writing. If the given file exists, its contents are destroyed.


两个都可以了..

#7


引用 3 楼 shang_shang 的回复:
fopen("filename","w"); 
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件, 
如果当然不存在,则生成该文件。

#8


引用 7 楼 jeff_nie 的回复:
引用 3 楼 shang_shang 的回复:
fopen("filename","w");
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件,
如果当然不存在,则生成该文件。

#9


引用 8 楼 lixun_21 的回复:
引用 7 楼 jeff_nie 的回复:
引用 3 楼 shang_shang 的回复:
fopen("filename","w");
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件,
如果当然不存在,则生成该文件。

#10


多谢各位了
但还是有些问题,我直接在编译器中,将参数提前设定后运行没有问题。
但是直接将文件(参数argv[1])拖拽到可执行程序上,这样生成的文件却在c:\Documents and Settings\user下,

难道fopen对手动和自动会选择不同的路径?
有没有办法,能实现不论怎样传参都生成在当前目录下。。。

#11



DWORD WINAPI GetModuleFileName(
  __in          HMODULE hModule,
  __out         LPTSTR lpFilename,
  __in          DWORD nSize
);
得到程序的目录


BOOL WINAPI SetCurrentDirectory(
  __in          LPCTSTR lpPathName
);
设置程序的运行目录

#12


引用 3 楼 shang_shang 的回复:
fopen("filename","w"); 
用w这个命令,如果当前存在filename这个文件,则会删除该文件,并生成同名的新文件, 
如果当然不存在,则生成该文件。

3楼说的已经很清楚了,4楼连具体的例子都贴出来了,楼主应该知道怎么修改为自己的东西吧??
加油!~

#13


引用 10 楼 renzu 的回复:
多谢各位了 
但还是有些问题,我直接在编译器中,将参数提前设定后运行没有问题。 
但是直接将文件(参数argv[1])拖拽到可执行程序上,这样生成的文件却在c:\Documents and Settings\user下, 

难道fopen对手动和自动会选择不同的路径? 
有没有办法,能实现不论怎样传参都生成在当前目录下。。。

如果楼主想将argv[1]放到当前目录的话,可以这样。

#include<stdio.h>

int main(int argc,char *argv[])
{
    FILE *fp;
    int i;

    if(argc < 2)
    {
        printf("Input Error!\nUsage:programmename filename\n");
        return -2;
    }

    if((fp = fopen(argv[1],"w")) == NULL)
    {
        printf("Open file error.\n");
        return -1;
    }

    /* 具体的写文件语句*/

    fclose(fp);

    return 0;
}