C语言怎么封装函数字符串
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章主要讲解了"C语言怎么封装函数字符串",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言怎么封装函数字符串"吧!封装函数: 判断闰年和平年该函
千家信息网最后更新 2025年11月11日C语言怎么封装函数字符串
这篇文章主要讲解了"C语言怎么封装函数字符串",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"C语言怎么封装函数字符串"吧!
封装函数: 判断闰年和平年
该函数判断传入的年份是否是闰年和平年,通过返回值表示结果。
#include//函数声明int GetYearSate(int year);int main(){ int year; printf("请输入年份:"); scanf("%d",&year); //判断闰年和平年 if(GetYearSate(year)) { printf("平年.\n"); } else { printf("闰年.\n"); } return 0;}/*函数功能: 判断平年闰年返回值: 0表示闰年 1表示平年*/int GetYearSate(int year){ if((year%4==0 && year0!=0)||(year%400==0)) { return 0; } return 1;}
封装函数: 字符串查找(参考strstr)
第一步查看帮助: man strstr
#include#include //声明函数的char *my_strstr(char *src_str,char *find_str);int main(){ char src_str[100];//"123456789" char find_str[100]; printf("请输入字符串:"); scanf("%s",src_str); printf("请输入查找的字符串:"); scanf("%s",find_str); //strstr() //查找到指定的字符串,会返回查找字符串在源字符串里的首地址 printf("查找的字符串结果:%s\n",strstr(src_str,find_str)); printf("查找的字符串结果:%s\n",my_strstr(src_str,find_str)); return 0;}//函数功能: 字符串查找函数//返回值: 返回查找到的字符串地址char *my_strstr(char *src_str,char *find_str){ int src_len; int find_len; int i,j; src_len=strlen(src_str); find_len=strlen(find_str); for(i=0;i 封装函数: 字符串比较(参考strcmp)
#include#include //声明函数的int my_strcmp(char *s1,char *s2);int main(){ char str1[100];//"123456789" char str2[100]; printf("请输入字符串1:"); scanf("%s",str1); printf("请输入字符串2:"); scanf("%s",str2); //int strcmp(const char *s1, const char *s2); //比较两个字符串是否相等。通过返回值表示。 printf("比较字符串的结果:%d\n",strcmp(str1,str2)); printf("比较字符串的结果:%d\n",my_strcmp(str1,str2)); return 0;}/*函数功能: 比较两个字符串是否相等返回值: 0表示相等 1表示不相等*/int my_strcmp(char *s1,char *s2){ while(*s1!='\0' && *s2!='\0') { if(*s1!=*s2)break; s1++; s2++; } if(*s1=='\0'&&*s2=='\0')return 0; return 1;} 封装函数: 字符串拼接(参考strcat)
#include#include //声明函数的char *my_strcat(char *s1,char *s2);int main(){ char str1[100];//"123456789" char str2[100]; printf("请输入字符串1:"); scanf("%s",str1); printf("请输入字符串2:"); scanf("%s",str2); //strcat 字符串拼接函数,拼接之后返回源字符串的首地址 // printf("拼接的结果:%s\n",strcat(str1,str2)); printf("拼接的结果:%s\n",my_strcat(str1,str2)); return 0;}//函数功能: 字符串拼接char *my_strcat(char *s1,char *s2){ char *p=s1; //记录源字符串的首地址 while(*s1 != '\0'){s1++;} //偏移到结尾 while(*s2!='\0') { *s1=*s2; s2++; s1++; } *s1='\0'; return p;} 封装函数: 字符串转整数(参考atoi)
#include#include int my_atoi(char *str);int main(){ char buff[100]; printf("请输入一个整数字符串:"); scanf("%s",buff); //字符串转整数 printf("转换结果:%d\n",atoi(buff)); printf("转换结果:%d\n",my_atoi(buff)); return 0;}/*函数功能: 字符串转整数函数形参: 传入待转换的字符串(0~9)返回值: 返回转换的整数结果,如果转换失败返回0*///"123ABC"int my_atoi(char *str){ int data=0; while(*str!='\0') { if(*str>='0' && *str<='9') { data*=10; //0 10 120 data+=*str-'0';//1 12 123 } else { break; } str++; } return data;} 封装函数: 字符串转浮点数(参考atof)
"123.456789" 456789->0.456789#include#include #include double my_pow(double x,int y);double my_atof(char *str,int cnt);int main(){ char buff[100]; printf("请输入一个浮点数字符串:"); scanf("%s",buff); //字符串转浮点数 printf("转换结果:%lf\n",atof(buff)); printf("转换结果:%lf\n",my_atof(buff,3)); return 0;}/*函数功能: 字符串转浮点数函数形参: str是传入待转换的字符串 cnt是保留的小数点位数返回值: 返回转换的整数结果,如果转换失败返回0*///"123.456 123"double my_atof(char *str,int cnt){ int data=0; int cnt_f=0; double data_f=0.0; while(*str!='\0' && *str!='.') { if(*str>='0' && *str<='9') { data_f*=10; data_f+=*str-'0'; } else { break; } str++; } str++; //跳过 "." "123.456789" while(*str!='\0' && cnt_f!=cnt) { if(*str>='0' && *str<='9') { data*=10; data+=*str-'0'; cnt_f++; //记录小数部分数量 } else { break; } str++; } //合成浮点数 "123.456" if(cnt>cnt_f) { cnt=cnt_f; } data_f+=data*my_pow(0.1,cnt); return data_f;}//函数功能:计算x的y次方//my_pow(2,3);double my_pow(double x,int y){ double tmp=1.0; int i; for(i=0;i 封装函数: 整数转字符串 123 "123"
#include#include #include void int_to_str(char *str,int data);int main(){ int data; char buff[100]; printf("请输入一个整数:"); scanf("%d",&data); //整数转字符串 int_to_str(buff,data); printf("buff=%s\n",buff); return 0;}/*函数功能: 整数转字符串*/void int_to_str(char *str,int data){ char buff[100]; //存放第一次分离的数据 int i=0; int j=0; while(data) //123 { buff[i]=data+'0'; data=data/10; i++; } for(j=0;j 封装函数: 浮点数转字符串 123.456 – "123.456"
#include#include #include int my_pow(int x,int y);void int_to_str(char *str,int data);void double_to_str(char *str,double data_f,int cnt);int main(){ double data; char buff[100]; printf("请输入一个浮点数:"); scanf("%lf",&data); double_to_str(buff,data,5); printf("buff=%s\n",buff); return 0;}/*函数功能: 浮点数转字符串*/void double_to_str(char *str,double data_f,int cnt){ char buff[50]; //存放第一次分离的数据 int i=0; int j=0; int n=0; int data_i1; int data_i2; double temp_f; /*1. 分离整数部分*/ //123.3 data_i1=data_f; //123 temp_f=data_f-data_i1; data_i2=temp_f*my_pow(10,cnt); //456 /*2. 转换整数部分*/ while(data_i1) { buff[i]=data_i1+'0'; data_i1=data_i1/10; i++; } /*3. 将整数部分放到数组里*/ for(j=0;j 封装函数: 判断回文字符串
该函数判断传入的字符串是否是回文,通过返回值表示结果。
#include#include #include int func(char *p);int main(){ char buff[100]; printf("输入字符串:"); scanf("%s",buff); if(func(buff))printf("回文.\n"); else printf("不是回文.\n"); return 0;}//函数功能: "123" "121"int func(char *p){ int i; int len; len=strlen(p); for(i=0;i 封装函数: 字符串替换
将源字符串里指定的单词替换成指定单词。
#include#include #include void str_func(char *str1,char *str2,char *str3);int main(){ char str1[100]; char str2[100]; char str3[100]; /*1.准备数据*/ printf("输入源字符串:"); scanf("%s",str1); printf("输入查找的字符串:"); scanf("%s",str2); printf("输入替换的字符串:"); scanf("%s",str3); str_func(str1,str2,str3); /*4. 完成字符串打印*/ printf("str1=%s\n",str1); return 0;}//"123A789" ""void str_func(char *str1,char *str2,char *str3){ int str1_len=0; int str2_len=0; int str3_len=0; int i,j; int cnt=0; /*2. 计算长度*/ str1_len=strlen(str1); str2_len=strlen(str2); str3_len=strlen(str3); /*3. 字符串替换*/ for(i=0;i str3_len) { cnt=str2_len-str3_len; //差值 //完成数据向前移动--覆盖 for(j=i+str2_len-cnt;j =i+str2_len;j--) { str1[j+cnt]=str1[j]; } str1[str1_len+cnt]='\0'; } //替换 for(j=0;j 封装函数: 清除二维数组的指定行
该函数功能可以通过传入的参数,清除指定二维数组的指定一行数据为0.
#include#include #include void clear(int (*p)[5],int a,int b);int main(){ int i,j; int buff[][5]= { {1,2,3,4,5}, {11,12,13,14,15}, {21,22,23,24,25} }; printf("源数据:\n"); for(i=0;i 封装函数:字符串里所有大写字母互相替换
将字符串里所有大写字母全部换成小写字母。或者小写字母全部换成大写字母。可以通过形参进行区分。 该功能广泛用在验证码功能上。
#include#include #include void func(char *str,int flag);int main(){ char buff[100]; printf("从键盘上输入字符串:"); scanf("%s",buff); printf("源字符串:%s\n",buff); func(buff,0); printf("大写转换小写:%s\n",buff); func(buff,1); printf("小写转大写:%s\n",buff); return 0;}//函数功能: 大写小写转换//flag=0表示大写转换小写 =1表示小写转大写void func(char *str,int flag){ int data; while(*str!='\0') { if(flag) { if(*str>='a'&& *str<='z') //小写 { *str=*str-32; } } else { if(*str>='A'&& *str<='Z') //小写 { *str=*str+32; } } str++; }} 封装GPS解码函数:可以传入GPS格式的字符串
该函数可以传入GPS格式的字符串,在函数里完成所有数据解码输出。经度、纬度、卫星的数量、时间
#include#include #include char gps_buff[]={ "$GNGGA,114955.000,2842.4158,N,11549.5439,E,1,05,3.8,54.8,M,0.0,M,,*4F" "$GNGLL,2842.4158,N,11549.5439,E,114955.000,A,A*4D" "$GPGSA,A,3,10,31,18,,,,,,,,,,5.7,3.8,4.2*37" "$BDGSA,A,3,07,10,,,,,,,,,,,5.7,3.8,4.2*2A" "$GPGSV,3,1,10,10,49,184,42,12,16,039,,14,54,341,,18,22,165,23*7B" "$GPGSV,3,2,10,22,11,318,,25,51,055,,26,24,205,,29,13,110,*7C" "$GPGSV,3,3,10,31,50,287,36,32,66,018,*7F" "$BDGSV,1,1,04,03,,,07,05,,,29,07,79,246,33,10,52,232,19*62" "$GNRMC,114955.000,A,2842.4158,N,11549.5439,E,0.00,44.25,061117,,,A*4D" "$GNVTG,44.25,T,,M,0.00,N,0.00,K,A*14" "$GNZDA,114955.000,06,11,2017,00,00*47" "$GPTXT,01,01,01,ANTENNA OK*35"};/*函数功能: 根据逗号位置提取数据函数参数:char *gps_src GPS源字符串地址char *buff 存放提取的数据char *find_head 查找的GPS数据头int cnt 逗号的偏移量返回值:提取的字节数。*/int GPS_GetData(char *gps_src,char *find_head,char *buff,int cnt){ char *p; int number=0; //提取的数量 int a=0; p=strstr(gps_src,find_head); if(p!=NULL) { //查找逗号的位置 while(*p!='\0') { if(*p==',')a++; //记录逗号的数量 if(a==cnt)break; //逗号找成功了 p++; } p++; //跨过当前逗号 //提取数据 while(*p!='\0') { if(*p==',')break; //遇到逗号停止提取数据 buff[number]=*p; p++; number++; } buff[number]='\0'; } return number;}int main(){ char buff[100]; GPS_GetData(gps_buff,"$GNGGA",buff,2); printf("纬度:%s\n",buff); GPS_GetData(gps_buff,"$GNGGA",buff,4); printf("经度:%s\n",buff); return 0;} 封装函数: 将十进制整数转为16进制输出(字符串形式)
#include//定义16进制的数据,方便输出char hex_val[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; int main() { int number=0; int a[100]; int i=0; int data; /*1. 输入十进制的整数*/ printf("输入一个整数:"); scanf("%d",&number); /*2. 16进制最大值是15-0xFF,取余进行分离*/ while(number>0) { data=number; a[i]=data; number=number/16; i++; } printf("输入整数的十六进制数: 0x"); /*3. 输出对应的16进制格式*/ for(i=i-1;i>=0;i--) { printf("%c",hex_val[a[i]]); } printf("\n"); } 感谢各位的阅读,以上就是"C语言怎么封装函数字符串"的内容了,经过本文的学习后,相信大家对C语言怎么封装函数字符串这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
字符
字符串
函数
输入
封装
功能
整数
数据
结果
大写
小写
点数
逗号
回文
平年
闰年
地址
字母
部分
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
安居宝数据处理服务器注册码
软件开发i3处理器够用吗
读习近平网络安全有感
推荐国际版生存服务器
怎样把音乐文件保存到数据库
怎么用access做员工数据库
什么叫小程序服务器
java取远程服务器路径
数据库的4大特性
高校信息网络安全专业怎么样
数据库bat类型
华为服务器更改管理口密码
泛微emobile 服务器
oa系统数据库建设
html5本地数据库安全
医保药店网络安全管理制度
python软件开发商
网络安全面临主要攻击
属于服务业软件开发公司账务处理
工信部网络安全服务标准
河北汇同城网络技术
我的世界阿努比斯服务器生存
法治文明网络安全法
河南服务器虚拟化部署云空间
软件开发技术要学多久
偃师优惠加油软件开发
赵立坚中国网络安全大会
boss校长软件开发公司
事业单位网络安全维护计划
连接用友财务管理服务器问题