c ++ sprintf函数和fstream创建/检查文本文件

时间:2011-07-05 01:15:39

标签: c++ fstream printf

我在使用sprintf和fstream函数时遇到了一些问题,以便为POS程序创建新的文本文件/检查文件是否已经存在。我不知道我做错了什么,因为同一组函数在我的代码中的其他地方工作正常......

此特定代码段正在从用户那里获取输入以创建详细信息文件,该名称由输入系统的名字和姓氏详细信息组成。由于某种原因,没有创建新文件。当我单步执行程序时,我可以看到custDetC变量正在填充正确的数据。我还包括文件存在检查,因为它可能或可能没有与手头的问题有关...

Tony Mickel

    sprintf(custDetC,"%s%s.txt", firstName.c_str(), lastName.c_str());
    cout << custDetC << endl;

    FileEX = FileExists(custDetC);

    if (FileEX == true)
    {
        fopen_s(&custDetF,custDetC, "rt");

        fprintf(custDetF, "%s %s\n", firstName, lastName);
        fprintf(custDetF, "$d\n", phoneNo);
        fprintf(custDetF, "%s $s\n", unitHouseNum, street);
        fprintf(custDetF, "%s %s %d", suburb, state, postCode);

        fclose(custDetF);
    }
    else
    {
        char *buf = new char[100];
        GetCurrentPath(buf);
        cout << "file " << custDetC << " does not exist in " << buf << endl;
    }
}

bool FileExists(char* strFilename) 
{
    bool flag = false;
    std::fstream fin;
    // _MAX_PATH is the maximum length allowed for a path
    char CurrentPath[_MAX_PATH];
    // use the function to get the path
    GetCurrentPath(CurrentPath);
    fin.open(strFilename, ios::in);

    if( fin.is_open() )
    {
        //cout << "file exists in " << CurrentPath << endl;
        flag = true;
    }
    else
    {
        //cout << "file does not exist in " << CurrentPath << endl;
        flag = false;
    }
    fin.close();

    return flag;
}

1 个答案:

答案 0 :(得分:1)

您似乎正在打开文件进行阅读,但您需要将其打开以进行书写。

而不是"rt"使用"wt"中的fopen_s()