我在使用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;
}
答案 0 :(得分:1)
您似乎正在打开文件进行阅读,但您需要将其打开以进行书写。
而不是"rt"
使用"wt"
中的fopen_s()