有通信录文件 txl.csv,添加微信号字段,根据输入的姓名,查找此人,为此人增加ta的微
时间: 2023-12-09 08:01:33 浏览: 32
要实现给通讯录文件txl.csv添加微信号字段并根据输入的姓名查找此人,并为此人增加微信号,可以按照以下步骤进行操作:
首先,打开txl.csv文件,读取其中的姓名字段,并将姓名字段存储在一个列表中。
然后,通过输入要查找的姓名,遍历姓名列表,查找与输入姓名匹配的姓名。
如果找到匹配的姓名,则询问用户要为此人增加的微信号,并将该微信号记录下来。
接下来,创建一个新的字段,命名为"微信号",并在txl.csv文件的表头中添加该字段。
再次遍历姓名列表,如果有姓名与输入姓名匹配,则在该行的"微信号"字段中填入刚刚记录的微信号。
最后,将修改后的txl.csv文件保存并关闭。
通过以上步骤,我们就实现了给通讯录文件txl.csv添加微信号字段,并根据输入的姓名查询此人,并为此人添加微信号的功能。
相关问题
#include <stdio.h> #include <stdlib.h> #include"TXL.h" void SearchContact(const Contact* pc) { char name[NAME_MAX] = { 0 }; printf("请输入要查找联系人的姓名:>"); scanf("%s", name); int pos = FindByName(pc, name); if (pos == -1) { printf("通讯录中不存在该联系人!!!\n"); return; } printf("%-20s %-12s %-30s %-30s\n", "姓名", "电话","电子邮件","地址"); printf("%-20s %-12s %-30s %-30s\n", pc->data[pos].name,pc->data[pos].tele, pc->data[pos].email,pc->data[pos].addr); }有什么错误
这段代码是一个通讯录管理程序中的函数,用来根据联系人姓名查找对应的联系人信息并输出。函数接收一个指向常量通讯录结构体的指针,然后使用scanf函数从用户输入中读取要查找的联系人姓名,再调用FindByName函数在通讯录中查找对应的联系人,如果不存在则输出提示信息,如果存在则按照一定的格式输出联系人的姓名、电话、电子邮件和地址信息。
这段代码中可能存在的错误有:
1. FindByName函数返回的是联系人在通讯录中的下标,因此pos的类型应该是int而不是Contact类型中定义的Pos类型。
2. 函数中没有对用户输入的姓名进行长度检查,可能会导致数组越界或者缓冲区溢出问题。应该使用fgets函数或者限制scanf函数输入字符的数量来避免这个问题。
3. 函数中使用了printf函数和格式化字符串来输出联系人信息,但是如果输入的信息过长可能会超出格式化字符串的长度,造成输出错误。可以使用%.*s来限制字符串输出的长度,如:
```
printf("%-20s %-12s %-30s %-30.*s\n", pc->data[pos].name, pc->data[pos].tele, pc->data[pos].email, ADDR_MAX, pc->data[pos].addr);
```
#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; }有什么错误
这段代码是一个通讯录管理程序中的函数,用来将通讯录中的联系人信息保存到文件中。函数接收一个指向常量通讯录结构体的指针,然后使用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;
}
```
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)