当前位置: 首页 > news >正文

做网站用西安网站设计开发

做网站用,西安网站设计开发,怎么做自己的发卡网站6,中国佛山营销网站建设前言 本次博客可以说内容最为多的一次博客,讲解同样很细致大家好好看看 1字符函数 在讲解字符函数时,大家得了解什么是字符吧 普通字符a b c 1 转义字符 \n 换行‘ \t’ 水平制表符\r回车 大家了解即可 在C语言中字符也可以有分类 所以我们先来看看…

前言

本次博客可以说内容最为多的一次博客,讲解同样很细致大家好好看看

1字符函数

在讲解字符函数时,大家得了解什么是字符吧

普通字符'a' ' b'  'c'  '1'  ' @'  转义字符' \n '  换行‘ \t’  水平制表符'\r'回车

大家了解即可

在C语言中字符也可以有分类

所以我们先来看看字符分类函数

1.1字符分类函数

大家看以上函数的参数返回值以及它的功能几乎一致

我们这里以这个函数为例

int isdigit ( int c );

isdigital 是能够判断参数部分的 c 是否是字符‘0’--‘9’的

代码

#include <stdio.h>
#include <ctype.h>
int main ()
{char str[]="1776ad";int size=sizeof(str)/sizeof(str[0]);while(size){if(isdigit(str[0]))printf("该字符为数字字符%c\n",str[0]);size--;}return 0;
}

该代码能够把一个字符串中的数字字符找到

看看返回值

A value different from zero (i.e., true) if indeed c is a decimal digit. Zero (i.e., false) otherwise.

如果c确实是十进制数字,则为与零不同的值(即true)。否则为零(即false)

再举一个例子

int islower ( int c );

看代码

#include <stdio.h>
#include <ctype.h>
int main ()
{int i = 0;char str[] = "Test String.\n";char c;while (str[i]){c = str[i];if (islower(c)) c -= 32;putchar(c);i++;}return 0;
}

该代码的作用是将字符串中的⼩写字⺟转⼤写,其他字符不变

当然咱么是个细节的人,看看返回值

 value different from zero (i.e., true) if indeed c is a lowercase alphabetic letter. Zero (i.e., false) otherwise.

如果c确实是小写字母,则值与零不同(即true)。否则为零(即false)

上面的每一个函数的表达式几乎一样,这里不再赘述,注意还是要看看返回值的含义

而且,发现了没有参数是int但是功能却是判断字符串

主要是中间其实发生了类型转换,本身int类型是大于char类型的

1.2字符转换函数

我们在这里讲解两个

int tolower ( int c ); //将参数传进去的⼤写字⺟转⼩写

int toupper ( int c );//将参数传进去的⼩写字⺟转⼤写

值得注意的是,他是完全可以有我们自主实现的

那么,我们可以模拟实现该函数

当然我们上一个代码其实就是它的模拟实现

所以,我们只是举一个例子就好

#include<ctype.h>
#include<stdio.h>
int main()
{
char a[]="jdkalkdkjakldkj\n";
int i=0;
while(a[i])
{
toupper(a[i]);
puchar(a[i])
i++;
}
return 0;
}

这个代码就是把小写字母变为大写字母

2字符串函数

2.1 strlen 的使⽤和模拟实现

定义

size_t strlen ( const char * str );

作用计算字符串的长度

字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数 不包 含 '\0' 

参数指向的字符串必须要以 '\0' 结束。

注意函数的返回值为 size_t,是⽆符号的( 易错 )

strlen的使⽤需要包含头⽂件

1strlen的使用

看代码

#include<string.h>
#include<stdio.h>
int main()
{char a[]=“jdlkalkdjkllkakldjkl”;
strlen(a);
return 0;
}

其实这个代码就是计算了字符串的长度

2模拟实现

分析 首先strlen函数得要接收一个地址类型是char *

返回一个无符号的数代表该字符串的长度

代码1实现

size_t My_strlen(const char* dest)
{assert(dest);int count = 0;while (*dest++)//当* dest为\0时 它的ASCLL码值为0{count++;}return count;
}
int main()
{char a[] = "jkaldkljda";printf("%zd\n", My_strlen(a));printf("%zd\n", strlen(a));return 0;
}

看结果

代码2实现

size_t My_strlen(const char* dest)
{assert(dest);char* p1 = (char *)dest;while (*dest++);//当* dest为\0时 它的ASCLL码值为0return dest-p1-1;
}
int main()
{char a[] = "jkaldkljdadakjkjlaksc";printf("%zd\n", My_strlen(a));printf("%zd\n", strlen(a));return 0;
}

其实就是把最后结果变为 指针-指针

但是由于*dest为‘\n’时有后置加加所以要多减去一个1

结果是一样的

2.2strcpy 的使⽤和模拟实现

• Copies the C string pointed by source into the array pointed by destination, including the terminating null character (and stopping at that point).

• 源字符串必须以 '\0' 结束

• 会将源字符串中的 '\0' 拷⻉到⽬标空间

• ⽬标空间必须⾜够⼤,以确保能存放源字符串

• ⽬标空间必须可修改

上面同样是注意事项

1strcpy的使用

int main()
{char a[10] = "djklak";char b[20] = { 0 };strcpy(b, a);printf("%s", b);return 0;
}

2strcpy的模拟实现

char *strcpy( char *strDestination, const char *strSource );

返回值为目的地址

看代码

char *My_strcpy(char *dest,const char *src)
{assert(dest && src);char* p1 = dest;while (*dest++ = *src++);return p1;
}

看结果

3.3.strcat 的使⽤和模拟实现

• Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the first character of source, and a null-character is included at the end of the new string formed by the concatenation of both in destination.

源字符串必须以 '\0' 结束 ⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。

⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。

⽬标空间必须可修改。

1strcat的使用

看代码

int main()
{char a[20] = "hello";char b[10] = " world";strcat(a, b);printf("%s\n", a);return 0;
}

2strcat的模拟实现

char *strcat( char *strDestination, const char *strSource );

char* My_strcat(char* dest, const char* src)
{char* ret = dest;assert(dest && src);while (*(++dest));while (*dest++ = *src++);return ret;
}
int main()
{char a[20] = "hello";char b[10] = " world";char c[20] = "hello";My_strcat(a, b);strcat(c, b);printf("%s\n", a);printf("%s\n", c);return 0;
}

看结果

3.4strcmp 的使⽤和模拟实现

• This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ or until a terminating null-character is reached.

•标准规定:第⼀个字符串⼤于第⼆个字符串,则返回⼤于0的数字 ◦ 第⼀个字符串等于第⼆个字符串,则返回0 

第⼀个字符串⼩于第⼆个字符串,则返回⼩于0的数字 

那么如何判断两个字符串? ⽐较两个字符串中对应位置上字符ASCII码值的⼤⼩

1strcmp的使用

int main()
{char* a = "jdkajkd";char* b = "djajdascdad";int flag = strcmp(a, b);if (flag > 0)printf("第一个字符串大\n");else if (flag == 0)printf("两个一样大\n");elseprintf("第二个字符串的\n");return 0;
}

2strcmp的模拟实现

int strcmp( const char *string1, const char *string2 );

int My_strcmp(const char* string1,const char *string2)
{assert(string1 && string2);while (*string1 && *string2){if (*string1 == *string2){string1++; string2++;}elsebreak;}return *string1 - *string2;
}
int main()
{char* a = "jdkajkd";char* b = "djajdascdad";int flag1=strcmp(a, b);int flag2 = My_strcmp(a, b);if (flag1*flag2>=0)printf("模拟成功\n");if (flag1 > 0)printf("第一个字符串大\n");else if (flag1== 0)printf("两个一样大\n");elseprintf("第二个字符串大\n");return 0;
}

看结果

3.5strncat 的使⽤和模拟实现

strncat就是多了个参数,限定copy的字符串大小

将source指向字符串的前num个字符追加到destination指向的字符串末尾,再追加⼀个 \0 字 符

如果source 指向的字符串的⻓度⼩于num的时候,只会将字符串中到 \0 的内容追加到destination指向的字符串末尾

1strncat的使用

#include <stdio.h>
#include <string.h>
int main ()
{char str1[20];char str2[20];strcpy (str1,"To be ");strcpy (str2,"or not to be");strncat (str1, str2, 6);printf("%s\n", str1);return 0;
}

2strncat的模拟实现

char * strncat ( char * destination, const char * source, size_t num );

char *My_strncat(char *dest,const char *src,size_t n)
{char* ret = dest;assert(dest && src);while (*(++dest));while (n--&&*src)*dest++ = *src++;*dest = '\0';return ret;
}
int main()
{char str1[20];char str2[20];char str3[20];strcpy(str1, "To be ");strcpy(str2, "or not to be");strcpy(str3, "To be ");My_strncat(str1, str2, 6);strncat(str3, str2, 6);printf("%s\n", str1);printf("%s\n", str3);return 0;
}

看结果

3.6strncmp的使⽤和模拟实现

⽐较str1和str2的前num个字符,如果相等就继续往后⽐较,最多⽐较num个字⺟,如果提前发现不⼀ 样,就提前结束,⼤的字符所在的字符串⼤于另外⼀个。如果num个字符都相等,就是相等返回0.

1strncmp的使用

#include <stdio.h>
#include <string.h>
int main ()
{char *p1="abcde";char *p2="abcfe";int a=strncmp(p1,p2,3);
if(a>0)
printf("第一个字符串在前3个字符中更大\n");
else if(a=0)
printf("两个字符串在前3个字符中一样大\n");
else
printf("第二个字符串在前3个字符中更大\n");return 0;
} 

2strncmp模拟实现

int My_strncmp(const char* str1, const char* str2,size_t n)
{assert(str1 && str2);while (n--&& *str1 && *str2){if (*str1 == *str2){str1++; str2++;}}return *str1 - *str2;
}
int main()
{char* p1 = "abcde";char* p2 = "abcfe";int a = strncmp(p1, p2, 3);int b = My_strncmp(p1, p2, 3);if (a * b >= 0)printf("模拟成功\n");if (a > 0)printf("第一个字符串在前3个字符中更大\n");else if (a==0)printf("两个字符串在前3个字符中一样大\n");elseprintf("第二个字符串在前3个字符中更大\n");return 0;
}

看结果

3.7strstr 的使⽤和模拟实现

1strstr的使用

char * strstr ( const char * str1, const char * str2);

函数返回字符串str2在字符串str1中第⼀次出现的位置

字符 串的⽐较匹配不包含 \0 字符,以 \0 作为结束标志

#include <stdio.h>
#include <string.h>
int main ()
{char str[] ="This is a simple string";char * pch;pch = strstr (str,"simple");strncpy (pch,"sample",6);printf("%s\n", str);return 0;
} 

2strstr模拟实现

int main()
{char *p=strstr("abcdefg","cd");printf("%s", p);return 0;
}
//2模拟实现一下
char* My_strstr(const char* p1, const char* p2)
{const char* cur=p1;const char* p3=p2;while (*cur){cur = p1;p3 = p2;while ((*p3&&*cur)&&*cur++==*p3++)if (!*p3)return (char*)p1;if (*cur)p1++;elsereturn NULL;}return NULL;
}

看结果

总结

这几个字符串函数的模拟实现花了不少时间才手打完

ok祝大家开心

http://www.ritt.cn/news/5993.html

相关文章:

  • 郑州网站建设公司企业推广文案
  • 做网站域名的设置关键词排名点击
  • 网站打开速度突然变慢的原因百度指数专业版app
  • 合肥做兼职网站阿里巴巴官网
  • cloud web 网站建设营销推广ppt
  • 网站怎么发外链谷歌搜索引擎优化
  • 淘宝客户自己做网站怎么做中国营销传播网官网
  • 长春网站建设兼职商业软文案例
  • 网站建设糹金手指花总搜索大全搜索引擎
  • 网站导航条用什么做沈阳cms模板建站
  • 做免费采集电影网站犯法吗平面设计
  • 手机网站建设制作seol英文啥意思
  • 软件下载网站建设营销型网站建设套餐
  • 一个网站多个域名备案网站推广外贸
  • 网站建设公司有哪些方面百度网站名称
  • 管理网站友情链接是免费的吗
  • 厦门海绵城市建设官方网站地推推广平台
  • 肇庆网站建设咨询王通seo赚钱培训
  • 做酒店网站有哪些目录株洲网站设计
  • 网站目录管理系统模板免费大数据查询平台
  • wordpress wp_is_moblile()如何优化搜索引擎的搜索功能
  • 网站建设发展历程女生做sem还是seo
  • 免费个人网站怎么做友情链接样式
  • 微网站制作速成法今日新闻最新事件
  • 巫溪网站建设百度发布平台官网
  • 自己做的网站怎么设置文件下载windows7优化大师
  • 上海新闻网站排名百度起诉seo公司
  • 广州找人做网站营销网络是啥意思
  • 深圳自助网站建设微信营销软件哪个好用
  • 效果型网站建设方法seo