#include <stdio.h> #include <stdlib.h> #include"TXL.h" void SaveContact(const Contact* pc) { FILE*pf=fopen("txl.txt","w"); //回来本地建立一个记事本 if (pf == NULL) { perror("fopen::SaveContact"); return; } //写文件 int i=0; for(i=0;i<pc->sz;i++) { fwrite(pc->data,sizeof(PeoInfo),1,pf); } //关闭文件 fclose(pf); pf = NULL; }有什么错误
时间: 2024-03-15 10:43:57 浏览: 42
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
这段代码是一个通讯录管理程序中的函数,用来将通讯录中的联系人信息保存到文件中。函数接收一个指向常量通讯录结构体的指针,然后使用fopen函数打开一个名为"txl.txt"的文本文件,如果打开失败则输出错误信息并返回。如果打开成功,则使用fwrite函数将通讯录中所有联系人的信息写入文件中,并在写入完成后使用fclose函数关闭文件。
这段代码中可能存在的错误有:
1. 函数定义时缺少返回值类型,应该在void前添加一个FILE*类型的返回值。
2. fwrite函数的第二个参数应该是一个指向联系人信息结构体的指针,而不是一个指向整个通讯录结构体的指针,应该修改为fwrite(&(pc->data[i]),sizeof(PeoInfo),1,pf)。
3. 函数中没有对fwrite函数的返回值进行错误处理,可能存在写入文件失败的情况。可以使用ferror函数来检查是否写入成功,如:
```
if (fwrite(&(pc->data[i]), sizeof(PeoInfo), 1, pf) != 1 || ferror(pf)) {
perror("fwrite::SaveContact");
return;
}
```
阅读全文