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

网站登录页面模板下载用wordpress做聊天

网站登录页面模板下载,用wordpress做聊天,designer怎么做网站,网站开发的工作制度重点介绍处理字符和字符串的库函数的使用和注意事项。 C语言中对字符和字符串的处理很是频繁#xff0c;但是C语言本身是没有字符串类型的#xff0c;字符串通常放在常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。 一、求字符串长度⚪strlen … 重点介绍处理字符和字符串的库函数的使用和注意事项。 C语言中对字符和字符串的处理很是频繁但是C语言本身是没有字符串类型的字符串通常放在常量字符串中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。 一、求字符串长度⚪strlen  字符串以 \0 作为结束标志strlen 函数返回的是在字符串中 \0 前面出现的字符个数不包含 \0 )。 参数指向的字符串必须要以 \0 结束。 易错点注意函数的返回值为 size_t是无符号(unsigned)的。 strlen - C Reference (cplusplus.com) ⚪【模拟实现】三种不同方法 #include stdio.h// 1、计数器方式 size_t my_strlen(const char* str) {size_t count 0;while (*str){count;str;}return count; }// 2、不能创建临时变量计数器 size_t my_strlen(const char* str) { if(*str \0){return 0;}else {return 1 my_strlen(str1);} }// 3、指针-指针的方式 size_t my_strlen(char* str) {char *p str; while(*p ! \0 ) {p;} return p-str; }int main() {char arr[] hello world;size_t count my_strlen(arr);printf(%zu\n, count);return 0; } 二、长度不受限制的字符串函数 1、strcpy Copies the C string pointed by source into the array pointed by destination, including the terminating null character (and stopping at that point). 源字符串 src 必须以 \0 结束。 会将源字符串 src 中的 \0 拷贝到目标空间 dest。 目标空间必须足够大以确保能存放源字符串。 目标空间必须可变即目标空间 dest 不可以被 const 声明。 strcpy - C Reference (cplusplus.com) ⚪【模拟实现】 #include stdio.h #include assert.hchar* my_strcpy(char* str2, const char* str1) {assert(str1 str2);char* ret str2;while (*str2 *str1){;}return ret; }int main() {char s1[] hello world;char s2[20] { 0 };char* ret my_strcpy(s2, s1);printf(%s\n, ret);return 0; } 2、strcat Appends a copy of the source string to the destination string. The terminating null character in destination is overwritten by the fifirst character of source, and a null-character is included at the end of the new string formed by the concatenation of both in destination. 源字符串 src 必须以 \0 结束。 将源字符串 src 中的 \0 一同拷贝到目标空间 dest 并删除 *dest 原来末尾的 \0。目标空间必须有足够大能容纳下源字符串的内容。 目标空间必须可修改即目标空间 dest 不可以被 const 声明。 strcat - C Reference (cplusplus.com) 字符串自己给自己追加会如何         当使用 strcat 函数将一个字符串追加到自身时可能会导致未定义的行为。strcat 函数的工作原理是在源字符串的结尾处追加目标字符串的内容并在结尾加上空字符 \0。当源字符串和目标字符串是同一个字符串时追加操作会导致源字符串的内容被破坏因为在追加过程中源字符串的内容会被覆盖最终结果会是一个不可预测的字符串。因为根据不同的编译器和库的版本strcat 函数在某些情况下可能不会导致未定义行为。但是将一个字符串追加到自身仍然是一个不好的编程实践因为它容易引发错误和混乱。         因此不推荐使用 strcat 函数将字符串追加到自身。如果需要将一个字符串复制到另一个字符串末尾可以使用 strcpy 函数进行复制操作。 【模拟实现】 #include stdio.h #include assert.hchar* my_strcat(char* dest, const char* src) {char* tmp dest;assert(dest src);while (*dest){dest;}while (*dest *src){dest;src;}return tmp; }int main() {char s1[20] hello;char s2[] world;char* ret my_strcat(s1, s2);printf(%s\n, ret);return 0; } 3、strcmp This function starts comparing the fifirst character of each string. If they are equal to each other, it continues with the following pairs until the characters diffffer or until a terminating null-character is reached. ⚪标准规定 第一个字符串大于第二个字符串则返回大于 0 的数字。第一个字符串等于第二个字符串则返回 0。第一个字符串小于第二个字符串则返回小于 0 的数字。 strcmp - C Reference (cplusplus.com) 那么如何判断两个字符串 返回值只需要满足要求即可比如大于 0 的数字不一定是1只需满足条件即可。 strcmp 函数的比较是基于字符的 ASCII 码进行的。它从两个字符串的第一个字符开始逐个比较直至找到不相等的字符或者其中一个字符串的结束符 \0。在比较的时候它会将两个字符的 ASCII 码进行减法运算返回结果作为比较的结果。         需要注意的是strcmp 函数是区分大小写的。也就是说大写字母和小写字母被认为是不同的字符。如果需要不区分大小写的字符串比较可以使用 strcasecmp 函数在某些编程环境中可能被称为_stricmp。 ⚪【模拟实现】 #include stdio.h #include assert.hint my_strcmp(const char* str1, const char* str2) {assert(str1 str2);while (*str1 *str2){if (*str1 \0){return 0;}str1;str2;}return (*str1 - *str2); }int main() {char s1[] abcdef;char s2[] abcq;int ret my_strcmp(s1, s2);if (ret 0){printf(\n);}else if (ret 0){printf(\n);}else{printf(\n);}return 0; } ⚠ 注意根据编译器的不同返回的结果也不同。 在 VS2019 中大于返回 1等于返回 0小于返回 -1。但在 Linux-gcc 中大于返回正数等于返回0小于返回负数。 // 推荐 if(strcmp(p1, p2) 0) {printf(p1 p2); } else if(strcmp(p1, p2 0)) {printf(p1 p2); } else if(strcmp(p1, p2) -1) {printf(p1 p2); }// 不推荐 if(strcmp(p1, p2) 1) {printf(p1 p2); } else if(strcmp(p1, p2 0)) {printf(p1 p2); } else if(strcmp(p1, p2) -1) {printf(p1 p2); } 三、长度受限制的字符串函数介绍 1、strncpy Copies the fifirst num characters of source to destination. If the end of the source C string (which is signaled by a null-character) is found before num characters have been copied, destination is padded with zeros until a total of num characters have been written to it. 拷贝 count 个字符从源字符串到目标空间。 如果源字符串的长度小于 count则拷贝完源字符串之后在目标的后边追加 0直到 count 个。 dest 和 src 不应该重叠重叠时可以用更安全的 memmove 替代。 目标空间 dest 必须足够大以确保能够存放源字符串。 目标空间 dest 必须可变即目标空间 dest 不可以被 const 声明。 strncpy - C Reference (cplusplus.com) ⚪【模拟实现】 #include stdio.h #include assert.hchar* my_strncpy(char* dest, const char* src, size_t count) {assert(dest src);char* cur dest;while (count--){if ((*dest *src) \0){break;}}if (count ! 0){while (count--){*dest \0;}}return cur; }int main() {char s1[20] { 0 };char s2[] hello world;int sz sizeof(s2) / sizeof(s2[0]);printf(%s\n, my_strncpy(s1, s2, sz));return 0; } 2、strncat Appends the fifirst num characters of source to destination, plus a terminating null-character. If the length of the C string in source is less than num, only the content up to the terminating null-character is copied. 如果源字符串的长度小于 count则只复制 \0 之前的内容。 strncat - C Reference (cplusplus.com) ⚪【模拟实现】 #include stdio.h #include assert.hchar* my_strncat(char* dest, const char* src, size_t count) {assert(dest src);char* cur dest;while (*dest){dest;}while (count--){if ((*dest *src) \0){return cur;}}*dest \0;return cur; }int main() {char s1[20] hello;char s2[] world;size_t sz sizeof(s2) / sizeof(s2[0]);printf(%s\n, my_strncat(s1, s2, sz)); // 从s2中取sz个追加到s1中return 0; } 3、strncmp 比较到出现另个字符不一样或者一个字符串结束或者 count 个字符全部比较完。 strncmp - C Reference (cplusplus.com) 【代码演示】  #include stdio.h #include string.hint main() {const char* p1 abczdef;const char* p2 abcqwer;int ret1 strncmp(p1, p2, 1);int ret2 strncmp(p1, p2, 4);printf(%d %d\n, ret1, ret2);return 0; } 四、字符串查找 1、strstr Returns a pointer to the fifirst occurrence of str2 in str1, or a null pointer if str2 is not part of str1. 返回字符串中首次出现子串的地址。若 str2 是 str1 的子串则返回 str2 在 str1 中首次出现的地址。如果 str2 不是 str1 的子串则返回 NULL 。 strstr - C Reference (cplusplus.com) ⚪【模拟实现】 #include stdio.h #include assert.hchar* my_strstr(const char* str1, const char* str2) {assert(str1 str2);if (*str2 \0){return (char*)str1;}char* cur (char*)str1;char* s1, *s2;while (*cur ! \0){s1 cur;s2 (char*)str2;while (*s1 *s2 (*s1 *s2)){s1;s2;}if (*s2 \0){return cur;}cur;}return NULL; }int main() {char s1[] abbcde;char s2[] bcd;char s3[] abcd;char* ret1 my_strstr(s1, s2);char* ret2 my_strstr(s1, s3);if (ret1 NULL){printf(未找到匹配的子串\n);}else{printf(%s\n, ret1);}if (ret2 NULL){printf(未找到匹配的子串\n);}else{printf(%s\n, ret2);}return 0; } 2、strtok sepdelimit 参数是个字符串定义了用作分隔符的字符集合。第一个参数指定一个字符串它包含了 0 个或者多个由 sep 字符串中一个或者多个分隔符分割的标记。 strtok 函数找到 str 中的下一个标记并将其用 \0 结尾返回一个指向这个标记的指针。注strtok 函数会改变被操作的字符串所以在使用 strtok 函数切分的字符串一般都是临时拷贝的内容并且可修改。 strtok 函数的第一个参数不为 NULL 函数将找到 str 中第一个标记strtok 函数将保存它在字符串中的位置。 strtok 函数的第一个参数为 NULL 函数将在同一个字符串中被保存的位置开始查找下一个标记。 如果字符串中不存在更多的标记则返回 NULL 指针。 strtok - C Reference (cplusplus.com) ⚠ 注意strtok 会破坏原字符串分割后原字符串保留第一个分割符前的字符。  【代码演示】 #include stdio.h #include string.hint main() {char arr[] 3031899646qq.com;printf(原字符串: %s\n, arr);const char* sep .; // 创建sepchar arr1[30];char* ret NULL;strcpy(arr1, arr); // 将数据拷贝一份保留arr数组的内容// 分行打印切割内容for (ret strtok(arr, sep); ret ! NULL; ret strtok(NULL, sep)){printf(%s\n, ret);}printf(分割后原字符串被破坏: %s\n, arr); // 分割后原字符串保留第一个分割符前的字符return 0; } 五、错误信息报告⚪strerror 返回错误码所对应的错误信息。errno 是一个全局的错误码变量。当 C 语言的库函数在执行过程中发生了错误后就会把对应的错误码赋值到errno中。 strerror - C Reference (cplusplus.com) ⚪【模拟实现】  #include stdio.h #include string.h #include errno.h// 错误码 错误信息 // 0 - No error // 1 - Operation not permitted // 2 - No such file or directory //int main() {char* str strerror(errno);printf(%s\n, str);return 0; } 六、字符操作 1、字符分类函数 ⚪【代码演示】 #include stdio.h #include ctype.hint main() {char ch1 a;int ret islower(ch1); // 判断ch1是否为小写 -- 非0为真printf(%d\n, ret);char ch2 B;int res islower(ch2); // 判断ch2是否为小写 -- 0为假printf(%d\n, res);return 0; } ⚠ 注意需引入头文件 ctype.h 头文件。  2、字符转换 int tolower ( int c ); int toupper ( int c ); ⚪【代码演示】  #include stdio.hint main() {char ch tolower(Q); // 大写转小写putchar(ch);return 0; } 七、内存操作函数 1、memcpy 函数 memcpy 从 src 的位置开始向后复制 count 个字节的数据到 dest 的内存位置。 这个函数在遇到 \0 的时候并不会停下来。 如果 src 和 dest 有任何的重叠复制的结果都是未定义的。  memcpy - C Reference (cplusplus.com) ⚪【模拟实现】  #include stdio.h #include assert.hvoid* my_memcpy(void* dest, const void* src, size_t count) {assert(dest src);void* ret dest;while (count--){*(char*)dest *(char*)src;dest (char*)dest 1;src (char*)src 1;}return ret; }int main() {char s1[] abcdefgh;char s2[20] xxxxxxxxxx;my_memcpy(s2, s1, 5);printf(%s\n, s2);return 0; } ⚪【代码演示】  // 拷贝结构体 #include stdio.h #include string.hstruct S {char name[20];int age; };int main() {struct S arr3[] { {张三, 20}, {李四, 30} };struct S arr4[3] { 0 };memcpy(arr4, arr3, sizeof(arr3));return 0; } 2、memmove 和 memcpy 的差别就是 memmove 函数处理的源内存块和目标内存块是可以重叠的。 如果源空间和目标空间出现重叠就得使用 memmove 函数处理。 C语言标准要求 memcpy 用来处理不重叠的内存拷贝而 memmove 用来处理重叠内存的拷贝。 memmove - C Reference (cplusplus.com) ⚪【模拟实现】 #include stdio.h #include assert.hvoid* my_memmove(void* dest, const void* src, size_t count) {assert(dest src);void* ret dest;//从前-后if (dest src){while (count--){*(char*)dest *(char*)src;dest (char*)dest 1;src (char*)src 1;}}//从后-前else{dest (char*)dest count - 1;src (char*)src count - 1;while (count--){*(char*)dest *(char*)src;dest (char*)dest - 1;src (char*)src - 1;}}return ret; }int main() {char arr[] abcdefgh;my_memmove(arr, arr 3, 2);printf(%s\n, arr);return 0; } 3、memset memset 是以字节为单位设置内存的。 memset - C Reference (cplusplus.com) ⚪【代码实现】  #include stdio.h #include string.hint main() {int arr[10] { 0 };memset(arr, 1, 20); // 将前20个字节全部设置为1return 0; } 4、memcmp 比较从 buf1 和 buf2 指针开始的 count 个字节。 ⚠ 注意memcmp 不同于 strcmpmemcmp 遇到 \0 不会停止比较。 memcmp - C Reference (cplusplus.com) ⚪【代码演示】 #include stdio.h #include string.hint main() {float arr1[] { 1.0, 2.0, 3.0, 4.0 };float arr2[] { 1.0, 3.0 };int ret memcmp(arr1, arr2, 8); // arr1是否比arr2大比较8个字节printf(%d\n, ret);return 0; }
http://www.zqtcl.cn/news/790402/

相关文章:

  • 多少钱算网站中山 网站定制
  • 镇江网站制作价格如何计算本地生活服务平台app
  • 洞泾网站建设怎么做推广赚佣金
  • 三拼域名做网站大连自助建站软件
  • 怎么做hs网站最专业的网站开发公司哪家最专业
  • 南京做网站的公司排名科技:开局研发六代战机许禾
  • 网站怎么做搜索引擎淘宝网站怎么做特价
  • 仿制网站建设oa办公系统官网
  • 深圳网站托管企业建站源码系统
  • 个人空间网站建设报告建站是什么东西
  • 好看的模板网站建设西安网站模板建站
  • 建设网站二级子页打不开广告设计平面设计培训班
  • 网站公司做网站要多少钱新乡
  • 天津谁做网站莱芜人才网招聘网
  • 学做网站的书籍自己做网站 最好的软件
  • 手机网站专题电商入门视频教程免费
  • aspx网站模板制作网页常用的软件有哪些
  • 网站主关键词湖南网站定制
  • 长沙seo网站排名优化公司进入秦皇岛最新规定
  • 企业网站优化平台宝山北京网站建设
  • 给人做代工的网站加盟代理网
  • 网站建设用dw电脑谷歌浏览器打开是2345网址导航
  • 做外贸一般总浏览的网站太原的网站建设公司哪家好
  • 台州建网站公司wordpress 用微信登陆
  • 广州白云网站建设家在深圳业主
  • 呼和浩特网站建设哪家最便宜?携程旅行网网站策划书
  • 网站建设及相关流程北京网站备案域名
  • 汉字叔叔花了多少钱做网站微商城科技
  • 网站代理被抓html网站开发实战
  • 如何建立免费的网站网站copyright写法