注册 登录
编程论坛 C++教室

文件打开默认路径

humy 发布于 2012-08-08 14:31, 4454 次点击
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

我写了个打开文件的函数,在存放该程序的文件夹里有一个humengya.txt.
没输路径就打不开。     
所以想问不输路径不可以?他不是到默认处找?默认路径不是当前文件夹?
结果如图
12 回复
#2
rjsp2012-08-08 15:16
默认路径不是当前文件夹?
----- 没有这种规定
#3
TonyDeng2012-08-08 15:20
默认路径在exe文件所在的文件夹中,VS有两种exe版本,debug和release版,这是两个不同的文件夹,都不在源代码的路径中。
#4
pangding2012-08-08 18:12
应该是 3 楼说的。楼主可以试一下让程序创建一个文件,看看是在那个文件夹里。那个就是默认文件夹。
#5
pangding2012-08-08 18:14
还有这个概念不叫默认路径,叫相对路径,相对路径从当前文件夹开始,可以用 .. 来表示它的父文件夹(比如 ..\abc.txt 表示父文件夹里的 abc.txt)。
相对,从盘符开始写到底的叫绝对路径。
#6
humy2012-08-09 07:30
回复 3楼 TonyDeng
bug,release路径是?
#7
humy2012-08-09 08:18
回复 4楼 pangding
只有本站会员才能查看附件,请 登录

记得学c的时候,文件流那章说打开一个文件如果它不存在,则系统就会创建一个。c++我查了一下,如图,是不是暗示
只有本站会员才能查看附件,请 登录
iftream就是打开文件时若不存在就会创建啊?课我上面没写路径的不就是?
#8
humy2012-08-09 08:23
回复 4楼 pangding
#include <stdio.h>
int main()
{
FILE *fp;
char fname[32];/*文件名*/
printf("请输入文件名\n");
scanf("%s",fname);/*输入文件名*/
strcat(fname,".txt");
fp=fopen(fname,"w+");
fprintf(fp,"%s","123");
fclose(fp);
return 0;
} 就像这个。(虽然是我百度出来的问题,人家是c++如何创建文本文件,可我感觉这是c语言编的啊?)
#9
humy2012-08-09 08:35
回复 4楼 pangding
而且在vs2010里生成
就有:
d:\humy\创建文件\创建文件\main.cpp(8): warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
#10
humy2012-08-09 09:52
回复 9楼 humy
这里error解决了。。。少了一个include
#11
hellovfp2012-08-09 11:20
九楼的警告可以用
#define _CRT_SECURE_NO_WARNINGS
或是
#pragma warning(disable:4996)

关掉,刚开始学习不用去管这么多.

8楼根本就是C语言的代码.你可以写一个类进行包装一下:
class File
{
public:
    bool open(string fname, char * mode)
    {
        fp = fopen(fname.c_str(), mode);
        if(!fp)
        {
            cerr << "open file error:" << fname << endl;
            return false;
        }
        return true;
    }
    void close()
    {
        if(fp)
            fclose(fp);
    }
private:
    FILE *fp;
};
#12
pangding2012-08-09 14:29
回复 8楼 humy
这个的效果相当于 c 语言里的 open("abc.txt", "w+"):
程序代码:
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    fstream file("abc.txt", ios::in | ios::out | ios::trunc);

    if (!file)
        cerr << "open failed!" << endl;
    else
        cout << "^_^" << endl;

    return 0;
}

#13
pangding2012-08-09 14:39
以下是引用humy在2012-8-9 08:18:00的发言:

记得学c的时候,文件流那章说打开一个文件如果它不存在,则系统就会创建一个。c++我查了一下,如图,是不是暗示iftream就是打开文件时若不存在就会创建啊?课我上面没写路径的不就是?


ifstream,是读,如果没有这个文件默认就会出错。不创建。
ofstream,是写,会创建新文件。如果文件已经存在,会先删掉原来的内容。如果不想删要加 ios::app。

有关 nocreate 和 noreplace 的问题,似乎现在已经不用了。如果有相关的需要,可以用其它方法代替:
[url]http://blog.[/url]
1