|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
void inputinfo()
{
FILE* fp;
int i = 0;
if ((fp = fopen_s(&fp, "C:\\Users\\30371\\Desktop\\vs 2022\\C#practise\\Teachersinfo.txt", "wb")) == NULL)
{
printf("无法打开文件!\n");
return;
}
fprintf(fp, "%d\n", n);
while (i < n)
{
fprintf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", teacher[i].ID, teacher[i].name, teacher[i].sex, teacher[i].college, teacher[i].birth, teacher[i].edu, teacher[i].position, teacher[i].wage, teacher[i].tel);
i++;
}
fclose(fp);
}
运行一直显示无法打开文件
你好呀,看起来你在编写一个保存教师信息到文件的程序,但遇到了文件无法打开的问题。让我来帮助你分析和解决这个问题。
首先,你的代码使用 `fopen_s` 函数打开文件,但使用方式有些问题。正确的使用 `fopen_s` 的方式是:
- errno_t fopen_s(FILE** pFile, const char* filename, const char* mode);
复制代码
让我们先看看你现有的代码:
- void inputinfo()
- {
- FILE* fp;
- int i = 0;
- if ((fp = fopen_s(&fp, "C:\\Users\\30371\\Desktop\\vs 2022\\C#practise\\Teachersinfo.txt", "wb")) == NULL)
- {
- printf("无法打开文件!\n");
- return;
- }
- fprintf(fp, "%d\n", n);
- while (i < n)
- {
- fprintf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n", teacher.ID, teacher.name, teacher.sex, teacher.college, teacher.birth, teacher.edu, teacher.position, teacher.wage, teacher.tel);
- i++;
- }
- fclose(fp);
- }
复制代码
如你所见,`fopen_s` 返回一个 `errno_t` 类型的错误码,而不是一个文件指针,所以你的条件判断语句是有问题的。正确的做法如下:
- #include <stdio.h>
- // 假设teacher结构体与n已经定义好
- void inputinfo()
- {
- FILE* fp;
- errno_t err;
- // 使用fopen_s打开文件
- err = fopen_s(&fp, "C:\\Users\\30371\\Desktop\\vs 2022\\C#practise\\Teachersinfo.txt", "wb");
- if (err != 0)
- {
- printf("无法打开文件!\n");
- return;
- }
- // 假设n为要写入的教师数量,并且教师信息保存在teacher结构体中
- fprintf(fp, "%d\n", n);
- for (int i = 0; i < n; i++)
- {
- fprintf(fp, "%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n",
- teacher[i].ID,
- teacher[i].name,
- teacher[i].sex,
- teacher[i].college,
- teacher[i].birth,
- teacher[i].edu,
- teacher[i].position,
- teacher[i].wage,
- teacher[i].tel);
- }
- fclose(fp);
- }
复制代码
注意这里几点:
1. `errno_t err` 用来接收 `fopen_s` 的返回值。
2. 当 `fopen_s` 成功时,`err` 值应为 0。
3. 根据你假设的 `teacher` 是个数组,我们依次写入每位教师的信息。
最后,如果你还是无法打开文件,请检查以下几点:
1. 确保路径是正确的,文件夹确实存在。
2. 检查文件是否被其他程序占用。
3. 检查权限问题,确保你的程序有写入该目录的权限。
希望这个能帮助你顺利解决问题,祝你编程愉快!如果有其他问题,欢迎随时提问~
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|
|