【书中示例】--《C程序设计语言》第二章:类型、运算符、表达式

本文介绍了C语言中几个实用的字符串处理及随机数生成函数,包括字符串长度计算、字符串拼接、字符转换、随机数生成等,并详细解释了每个函数的工作原理及使用限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*  string(),返回字符串s的长度  */
int string(char s[])
{
	int i;

	for (i = 0;s[i] != '\0';i++)
		;
	return i;
}



/*  判断是否为闰年  */
if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400)
printf("%d is a leap year", year);//是闰年



/*  atoi(),将字符串s转换为对应的int型  */
//使用此函数有个前提:字符串s中全是数字,无其他符号;否则转化的整形会有截断
int atoi(char s[])
{
	int i, n;

	n = 0;
	for (i = 0;s[i] >= '0'&&s[i] <= '9';++i)
		n = n * 10 + (s[i] - '0');

	return n;
}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1、s[i]-'0' 可以计算出该字符所对应的数字值
2、此函数功能的缺陷:
   1.数字是无符号数
   2.字符串中无法有空白符
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/


/*  lower(),把大写字母转化成小写字母 (只限与ASCII字符集)  */
//如果该字符不是大写字母,则返回该字符本身
char lower(char c)
{
	if (c >= 'A'&&c <= 'Z')
		return c - 'A' + 'a';//将大写字母变成小写字母
	else
		return c;
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.if (c >= '0'&&c <= '9') 可以用函数isdigit(c)
2.大写字母变小写字母 可以用函数tolower(c)
3.以上两个函数都在头文件<ctype.h>中
++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/


/*  rand(),生成伪随机数  */
//next全局变量为种子
unsigned long int next = 1;
int rand(void)
{
	next = next * 1103515245 + 12345;
	return (unsigned int)(next / 65536) % 32768;
}
/*  srand(),为rand()设置随机种子  */
void srand(unsigned int seed)
{
	next = seed;
}



/*  squeeze(s,c),删除字符串s中出现的所有字符c  */
void squeeze(char s[], char c)//传入了字符串头指针,在函数内的操作,会对字符串造成改变(引用传递)
{
	int i, j;

	for (i = j = 0;s[i] != '\0';i++)
		if (s[i] != c)
			s[j++] = c;
	s[j] = 0;
}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++
1.s[j++]=c;相当于:
  s[j]=c;
  j++;
2.适当运用前置、后置运算符++ -- ,可以使代码更加简洁明了
+++++++++++++++++++++++++++++++++++++++++++++++++++++++*/



/*  srecat(),将字符串t接到字符串s的尾部;假设s的空间足够大  */
void srecat(char s[], char t[])
{
	int i, j;

	i = j = 0;
	while (s[i] != '\0')//找到字符串s的末尾
		++i;
	while ((s[i++] = t[j++]) != '\0')//拷贝t
		;
}
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++
1.注意拷贝操作:
  s[i++]=t[j++];
2.赋值运算符返回它左边的值.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值