c里常见的几个有用的函数总结

本文分享了作者根据《TCPL》一书所实现的六个C语言实用函数,包括字符串比较、复制、联接,以及日期计算和月份名称转换等功能。通过对这些函数的学习和实践,有助于加深对C语言指针及字符串操作的理解。

  最近看了看tcpl,书里的列子异常漂亮。就自己用指针重新实现了一遍。在这记载几个,加深对c的理解。

  第一个是字符串比较函数,如果相等就返回0,不等的话返回他俩的差值。我在xp+vs2008下编译都通过了,有兴趣的同志可以试试。废话不多说上程序。

int strcmp(char *s, char *t) { for (;*s == *t; s++, t++) { if (*s =='/0') { return 0; } } return *s - *t; } 

  第二个是字符串复制函数,这个是精简版,为什么没有是否结束,大家自己想想,呵呵。

void strcpy(char *pstr1, const char *pstr2) { while(*pstr1++ = *pstr2++) ; } 

  第三个是字符串联接函数,自己写的时候一定要记着把末尾的结束标志加上。

void strcat(char *pstr1, const char *pstr2, int n) { int i = 0; while((*pstr1) != '/0') ++pstr1; ; while(*pstr1++ = *pstr2++) if (n == ++i) { break; } ; *pstr1 ='/0'; } 

  第四个是读取每行的函数,第二个参数是控制这行读几个字符的。

int getline(char str[], int count) { int i = 0; int c = 0; for (i = 0; (i < count -1)&&((c = getchar()) != EOF) && c != '/n'; ++i) { str[i] = c; } if (c == '/n') { str[i] = c; ++i; } str[i] = '/0'; return i; } 

  第五个是输入一个日期,算出今天是这年的第几天的函数。

int day_of_year(int year, int mouth, int day) { static int daytable[2][13] = {{0,31,29,31,30,31,30,31,31,30,31,30,31}, {0,31,28,31,30,31,30,31,31,30,31,30,31}}; int lamp = year % 4 ==0 && year % 100 != 0 || year % 400 == 0; int *ptr = &daytable[lamp][13]; for (int i = 0; i < mouth; ++i) { day += *(ptr + i); } return day; } 

  第六个是输入数字月份,输出字符串月份的一个函数(这个函数写的很有水平,我很喜欢)。

char *GetMonthName(int mouth) { static char *name[] = { "Illegal month","January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"}; return (mouth >=1 && mouth <= 12) ? name[mouth] : name[0]; } 

  好了,先总结到。看见好的继续写上来。这些函数看起来很简单。但我自己肯定写不出这么简洁,并且合理的程序来。还是那句话,路漫漫其修远兮 吾将上下而求索。

转载于:https://www.cnblogs.com/fengju/archive/2011/02/17/6174356.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值