string fname; string type; cout << fixed << left << setw(20) << "文件名" << setw(10) << "类型" << setw(10) << "大小</B>" << setw(10) << "起始磁盘块号" << endl; for (int i = 2; i < MSD + 2; i++) { if (curDir->directItem[i].firstDisk != -1) { fname.assign(curDir->directItem[i].fileName); type = fname.substr(fname.length() - 4); if (str[1].compare(type) == 0) { cout << fixed << setw(20) << curDir->directItem[i].fileName; cout << fixed << setw(20) << type; cout << setw(10) << curDir->directItem[i].firstDisk << endl; } } }这段代码报错为文件内存出现未经处理的异常
时间: 2023-07-08 18:36:05 浏览: 63
这个问题的提示信息比较简略,需要查看更多的代码和上下文,才能确定具体的错误原因。但是,从报错信息来看,很可能是程序在访问内存的时候出现了未被处理的异常,可能是由于访问了不存在的内存地址,或者是访问了已被释放的内存区域。请尝试检查程序中是否存在这样的错误,例如是否存在野指针、内存泄漏、数组越界等问题。如果还有其他的报错信息,可以一并提供,以便更好地帮助您解决问题。
相关问题
string a; cout << "请输入要导出的文件名:"; cin >> a; ofstream file(a); for (int j = 0; j < i.v.size(); j++) { file << i.v[j].num << " " << i.v[j].name << " " << i.v[j].sex << " "<< i.v[j].score1 << " " << i.v[j].score2 << " " << i.v[j].score3 << endl; }file.close(); cout << "导出成功!" << endl;system("pause");依据上述代码写一个自动保存到fname.txt的代码
ofstream file("fname.txt");
for (int j = 0; j < i.v.size(); j++) {
file << i.v[j].num << " " << i.v[j].name << " " << i.v[j].sex << " " << i.v[j].score1 << " " << i.v[j].score2 << " " << i.v[j].score3 << endl;
}
file.close();
cout << "保存成功!" << endl;
system("pause");
int mkdir(string* str) { char fName[20]; strcpy(fName, str[1].c_str()); //检查目录名是否合法 if (!strcmp(fName, ""))return 0; if (str[1].length() > 10) { cout << "目录名太长!请重新输入!" << endl; return 0; } if (!strcmp(fName, ".") || !strcmp(fName, "..")) { cout << "目录名称不合法!" << endl; return 0; } //找当前目录下是否有目录重名 for (int pos = 2; pos < MSD + 2; pos++) { if (!strcmp(curDir->directItem[pos].fileName, fName)&&curDir->directItem[pos].type==1) { cout << "当前目录下已存在目录重名!" << endl; return 0; } } //检查当前目录下空间是否已满 int i; for (i = 2; i < MSD + 2; i++) if (curDir->directItem[i].firstDisk == -1)break; if (i >= MSD + 2) { cout << "当前目录下空间已满" << endl; return 0; } //检查是否有空闲磁盘块 int j; for (j = USER_ROOT_STARTBLOCK + 1; j < DISK_NUM; j++) if (fat[j].state == 0) { fat[j].state = 1; break; } if (j >= DISK_NUM) { cout << "无空闲盘块!" << endl; return 0; }
这段代码实现了一个创建目录的函数,它的功能是在当前目录下创建一个指定名称的子目录。函数中的参数是一个字符串指针,表示要创建的目录名称。函数首先检查目录名是否合法,如果目录名为空或者长度超过了限制,则输出提示信息并返回。接着检查当前目录下是否有目录名重复的情况,如果有则输出提示信息并返回。然后检查当前目录下空间是否已满,如果已满则输出提示信息并返回。接下来检查是否有空闲的磁盘块,如果没有则输出提示信息并返回。如果以上所有检查都通过了,则在当前目录下创建一个新的目录,并在文件分配表中分配一个新的磁盘块来保存该目录的内容。最后返回创建成功的标志。
阅读全文