- C语言学习笔记第十二天
- 一、字符串相关操作函数:
- 二、项目练习_通讯录系统
- 一、字符串相关操作函数:
int atoi(const char *nptr);
功能:字符串转int类型
long atol(const char *nptr);
功能:字符串转long类型
long long atoll(const char *nptr);
功能:字符串转long long类型
double atof(const char *nptr);
功能:字符串转double类型
char *strstr(const char *haystack,const char *needle);
功能:在haystack中查找是否存在子串needle
返回值:needle在haystack中首次出现的位置,如果找不到则返回NULL
int sprintf(char *str,const char *format, ...);
功能:把各种类型的数据输出给字符串str
返回值:转换后字符个数
int sscanf(const char *str,const char *format,...);
功能:从str中解析读取数据到变量中
返回值:成功解析出来的变量个数
void *memcpy(void *dest,const void *src,size_t n);
功能:从src位置拷贝n个字节到dest的位置
功能:链式调用
int memcmp(const void *s1,const void *s2,size_t n);
功能:比较两块内存的值,按照字节比较,一旦比较出结果后面不再比较
返回值:
s1 == s2 0
s1 < s2 负数
s1 > s2 正数
- 二、项目练习_通讯录系统
项目要求:
存储联系人信息:姓名、性别、电话 (最大存储量为50人,当然也可以考虑扩展性,设置为动态内存分配)
功能要求:
1、增加联系人
2、按名字删除联系人
3、按名字修改联系人信息
4、查找联系人,按照电话或者姓名,支持模糊查找(提示strstr函数可以支持字符串查找哦)
5、显示所有联系人信息
6、退出系统
个人代码如下(老师还没讲,可能有瑕疵):
#include#include #include #include //最大存储个数为50个 char name[50][20]={}; char sex[50]={}; char tel[50][12]={}; int cnt=0; //联系人个数索引 void add(void) { printf("请输入联系人姓名 性别 号码,中间用空格隔开:"); int i=0; for(;i<50;i++) { if(sex[i]==0) { break; } } if(i>49) { printf("50个人满了,联系程序员扩容"); sleep(1); return; } scanf("%s %c %s",name[i],&sex[i],tel[i]); printf("添加成功……n"); sleep(1); //printf("%s %c %s",name[cnt],sex[cnt],tel[cnt]); } void del(void) { char n[20]={}; printf("请输入你要删除的联系人姓名:"); scanf("%s",n); int i=0; for(;i<50;i++) { if(sex[i] && strcmp(n,name[i])==0) { break; } } if(i>=50) { printf("列表里没有这号人物……n"); sleep(1); return; }else { printf("删除成功……n"); sex[i]=0; sleep(1); } } void change(void) { printf("请输入需要修改的联系人姓名:"); char n[20]={}; scanf("%s",n); int i=0; for(;i<50;i++) { if(sex[i] && strcmp(n,name[i])==0) { break; } } if(i>=50) { printf("列表里没有这号人物……"); sleep(1); return; }else { printf("请输入修改后的姓名 性别(F/M) 电话号码:"); scanf("%s %c %s",name[i],&sex[i],tel[i]); printf("修改成功……n"); sleep(1); } } void find(void) { printf("请输入需要查找的电话或者是姓名:"); char s[20]; scanf("%s",s); int i=0,f=1; for(;i<50;i++) { if(sex[i] && (strstr(name[i],s)!=NULL || strstr(tel[i],s)!=NULL)) { f=0; printf("姓名:%stt性别:%ctt电话:%sn",name[i],sex[i],tel[i]); } } if(f) { printf("列表里没有这号人物……"); sleep(1); return; } printf("查找结束……"); sleep(5); } void show(void) { for(int i=0;i<50;i++) { if(sex[i]) { printf("姓名:%stt性别:%ctt电话:%sn",name[i],sex[i],tel[i]); } } sleep(5); } void show_interface(void) { printf("1、增加n"); printf("2、删除n"); printf("3、修改n"); printf("4、查找n"); printf("5、显示信息n"); printf("0、退出n"); printf("请输入你的选择:"); } void (*fun[])(void)={ add, del, change, find, show }; int main(int argc,const char* argv[]) { int key=0; for(;;) { system("clear"); show_interface(); scanf("%d",&key); if(key>0 && key<6) { fun[key-1](); }else { break; } } return 0; }



