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

房地产类的网站建设海宁网站建设

房地产类的网站建设,海宁网站建设,网页游戏大全小游戏,毕设做网站什么能过在学习完成了C语言的的指针这一大难点后#xff0c;我们将继续学习C语言里面的库函数#xff0c;其中字符函数也是比较重要的一类。 零 . 字符函数#xff1a; 下面列出了头文件 ctype.h 中定义的函数。 这些函数用于测试字符是否属于某种类型#xff0c;这些函数接受 in…在学习完成了C语言的的指针这一大难点后我们将继续学习C语言里面的库函数其中字符函数也是比较重要的一类。 零 . 字符函数 下面列出了头文件 ctype.h 中定义的函数。 这些函数用于测试字符是否属于某种类型这些函数接受 int 作为参数它的值必须是 EOF 或表示为一个无符号字符。 如果参数 c 满足描述的条件则这些函数返回非零true。如果参数 c 不满足描述的条件则这些函数返回 这些函数所需要的头文件是ctype.h,在这里我们只需要练习一个函数就ok了其他的函数是非常类似的。借助下面的练习完成。 1.1. 练习1将字符串中的小写字母改成大写字母其他不变 方法一利用ASCII码来改变 代码如下 #define _CRT_SECURE_NO_WARNINGS #includestdio.h #includectype.h //练习1将字符串中的小写字母改成大写字母其他不变 int main() {char str[] hElLo WOrld;char c;int i 0;while (str[i]){char c str[i];if (islower(c))c - 32;putchar(c);i;}return 0; }我们来看这段代码1. 其中islower就是判断字母是小写如果是小写那么减去32小写字母ASCII 97–122减去32 → 大写字母ASCII 65–90如果是大写就不进去if内部。 2. putchar输出转换后的字符或原大写字符到标准输出。 3. 循环条件​str[i] 检查当前字符是否为非零即非 \0遇到结束符时终止 4. char c 声明字符变量用于存储单个字符将 str[i] 的值字符复制到变量 c 中二者内存独立修改 c 不影响原字符串 方法二利用字符转换函数 代码如下 //练习1将字符串中的小写字母改成大写字母其他不变 int main() {char str[] hElLo WOrld;char c;int i 0;while (str[i]){char c str[i];c toupper(c);putchar(c);i;}return 0; }此时就不需要判断了如果加了判断也是ok的这样就能把字符进行大写化 toupper就是to upper往上-大写。 tolower就是to lower往下-小写。 一. 重要的字符函数 1. strlen函数 1. 1.strlen 函数的使用 strlen是库函数本质是通过计算字符串里面的\0前面的字符的个数他是可以用来计算字符串但是不能用来计算字符数组的一般字符数组里面不含\0 同时返回值是一个无符号数需要打印的话使用%zd传入字符串的首地址就ok 1.2 . strlen函数的模拟 代码如下 size_t my_strlen(char* c) {int count 0;while (*c){count;c;}return count; }int main() {char* c helso;int ret my_strlen(c);printf(%zd, ret); }还可以做一下稍微的改进 size_t my_strlen(char* c) {int count 0;while (*c){count;}return count; }int main() {char* c helsole;size_t ret my_strlen(c);printf(%zd, ret); }先来看这个第二个代码的while循环 *c 包含两步操作 ​*c**​解引用指针 c获取当前字符的值。​c​指针后移指向下一个字符​副作用发生在解引用之后。 可以详细看这张图标来完成。我们还可以继续尝试递归的方式还有 #includeassert.h size_t my_strlen(const char* str) {assert(str);if (*str \0)return 0;elsereturn 1 my_strlen(str 1); }int main() {char a[] heijos;size_t ret my_strlen(a);printf(%zd, ret); }2.strcpy函数 2.1 strcpy的使用 C 库函数 **char *strcpy(char dest, const char src) 把 src 所指向的字符串复制到 dest。 该函数返回一个指向最终的目标字符串 dest 的指针。 cpy顾名思义就是靠拷贝函数将原字符串拷进目标字符串src–dest,需要注意的是 需要注意的是如果目标数组 dest 不够大而源字符串的长度又太长可能会造成缓冲溢出的情况同时原来的字符串也是以‘\0’结尾。\0也会被复制 #includestring.h int main() {char* c copy to d;char d[10] { 0 };strcpy(d, c);printf(%s, d); }网址给出的案例 最后结果 strcpy代码模拟 我们尝试模拟代码如下 char* my_strcpy(char* dest, const char* str) {int tmp dest;while (*str){*dest *str;dest;str;}return dest; }#includestring.h int main() {char* c copy to d;char d[10] { 0 };my_strcpy(d, c);printf(%s, d); }这段代码就完成了复制我们还可以做一下改进 char* my_strcpy(char* dest, const char* str) {int tmp dest;while (*dest *str);return dest; }#includestring.h int main() {char* c copy to d;char d[10] { 0 };my_strcpy(d, c);printf(%s, d); }以下分步拆解首次循环逻辑假设 str 初始指向字符串 copy to d 的首字符 c ​步骤​​操作​​指针状态​​**dest 赋值结果**​1. while (*str) 检查先取 *str 的值c非零 → 条件为真 → ​**再执行 str**​str 指向 o​未执行赋值​2. 进入循环体执行 *dest *strstr 仍指向 odest[0] o3. dest目标指针后移dest 指向下一个位置- ​关键问题​ ​首字符 c 被完全跳过​条件判断时检查了 *strc但 str 在进入循环体前已执行导致循环内 *str 实际指向的是第二个字符 o。​**dest[0] 未被覆盖​因初始化为 0char d[10] {0}且未被赋值 → 首字节仍是 \0导致 printf 输出空字符串。 你的问题直指C语言中后置自增运算符*str的核心陷阱**​它会在判断条件后立刻移动指针导致循环内操作错位。以下是详细分析 ​问题核心while (*str) 的执行顺序​ 以下分步拆解第二段代码的首次循环逻辑假设 str 初始指向字符串 copy to d 的首字符 c ​步骤​​操作​​指针状态​​**dest 赋值结果**​1. while (*str) 检查先取 *str 的值c非零 → 条件为真 → ​**再执行 str**​str 指向 o​未执行赋值​2. 进入循环体执行 *dest *strstr 仍指向 odest[0] o3. dest目标指针后移dest 指向下一个位置- ​关键问题​ ​首字符 c 被完全跳过​条件判断时检查了 *strc但 str 在进入循环体前已执行导致循环内 *str 实际指向的是第二个字符 o。​**dest[0] 未被覆盖**​因初始化为 0char d[10] {0}且未被赋值 → 首字节仍是 \0导致 printf 输出空字符串。 ⚠️ ​对比三种自增写法的差异​ 以下对比你提供的三版代码中 while 条件的行为 ​代码版本​​**while 条件**​​行为​​是否复制首字符​​第一段​while (*str)检查当前字符非 \0​不自增指针​ → 循环内复制当前字符✅ 是​第二段​while (*str)检查后立刻自增​ → 循环内复制的是下一个字符​❌ 否跳过首字符​第三段​while (*dest *str)先复制当前字符包括 \0​再自增​ → 完整复制✅ 是 ​核心区别​​后置自增i在表达式中“先返回值再自增”​导致条件判断和循环内操作使用的指针位置不同步 3.strcat函数 3.1 strcat函数的使用 C 库函数 **char *strcat(char dest, const char src) 把 src 所指向的字符串追加到 dest 所指向的字符串的结尾 该函数返回一个指向最终的目标字符串 dest 的指针。 两个字符串要求以\0结尾。 正确代码如下 int main() {char c[22] i like;char* b you;strcat(c, b);printf(%s, c); }避免出现目标空间不够会出先错误。 3.2 strcat的模拟实现 通过观察我们做出以下代码 char* my_strcat(char* dest, char* str) {char *tmp dest;while (*dest);dest--;while ((*dest *str));return tmp; }int main() {char c[22] i like;char* b you;my_strcat(c, b);printf(%s, c); }为什么有dest– 在 C 语言的字符串操作中while (*dest) 这种循环是定位目标字符串末尾的常见写法但它的执行逻辑会导致 dest 指针最终指向 \0 ​之后的位置而非 \0 本身。以下是详细分析 ​**while (*dest) 的执行机制**​ 假设目标字符串 dest 为 i like存储在数组 c[22] 中其内存布局如下\0 在索引 6 处 索引01234567…字符ilike\0?… 循环的执行步骤如下 ​**检查条件 *dest**​ 若 *dest 非 \0条件为真进入循环体但此循环无显式循环体仅执行指针自增。 ​**执行自增 dest**​ ​后置自增​先返回 dest 的当前值再将 dest 指向下一位置。 ​**重复直到遇到 \0**​ 当 dest 指向 c[6]\0时 条件 *dest 为 0假​但自增仍会执行​ → dest 移动到 c[7]。 因此dest–是必须要有的。 4.strcmp函数 4.1strcmp的使用 顾名思义就是比较两个字符串的大小 我们先说以下cmp的比叫方式 字符串通过标准库函数 strcmp() 实现比较核心逻辑为 ​逐字符ASCII值对比​从首字符开始逐个比较字符的ASCII值​终止条件​ 遇到不相同的字符 → 返回两字符ASCII差值正数/负数。遇到 \0 结束符 → 若长度不同短字符串较小否则相等返回0 ![[Pasted image 20250613170755.png]] 使用说明代码如下 int main() {char c[22] i like;char* b you;int ret strcpmy(c, b);if (ret 0)printf(一样大);if (ret 0)printf(c b);else {printf(c b);} }4.2.strcmp的模拟实现 第一次尝试而写的错误代码没有考虑到\0,就是str的结束 int my_strcmp(const char *str1,const char * str2 ) {while (*str1 - *str2 0){str1;str2;}return *str1 - *str2; }int main() {char c[22] i like;char* b you;int ret my_strcmp(c, b);if (ret 0)printf(一样大);if (ret 0)printf(c b);else {printf(c b);} }改进过后的代码就有 int my_strcmp(const char *str1,const char * str2 ) {while (*str1 ! 0 *str1 - *str2 0){//只有未到达/0时才继续str1;str2;}return *str1 - *str2;//当到达0时一定比没到到达的小这样比较出来了 }int main() {char c[22] i like;char* b you;int ret my_strcmp(b,c);if (ret 0)printf(一样大);if (ret 0)printf(c b);else {printf(c b);} }
http://www.hkea.cn/news/14263037/

相关文章:

  • 网站建设技术是干嘛的如何做商城网站小程序
  • 做网站需要学数据库吗网站建设框架模板下载
  • 企业为什么建站做公司网站都需要什么
  • 拿自己爱人做网站百度站长统计
  • 广州网站建设公司万齐网络科技建网站方案
  • pyhton做网站网页微博超话签到
  • 自助建站平台哪家好超级seo企业网站系统
  • 找网站有中文字目的网络营销的概念和界定
  • 在哪里做网站比较好百度云服务器官网
  • 电商数据网站有哪些中铁建设集团官网登录
  • 男女做那个的小视频网站极简风网站
  • 公司注销后 网站备案吗佛山市网站建设公司
  • 做网站用什么电脑配置网站搭建方案
  • 大良网站建设dwxw南通企业网站排名
  • 电商网站开发需要掌握哪些知识技能可做百度百科参考资料的网站
  • 什么是网站交互性网络营销相关理论
  • 兰西网站建设html静态页面兼职
  • 微网站背景图片大连网站制作选择ls15227
  • 阿里云除了做网站还能用来干什么河源市建设网站
  • 本地南昌网站建设电商
  • 网站建设网络推广公司有哪些百度四川建设厅网站
  • 企业网站选择第三方还是自己做做网站的主机配置
  • 河南网站建设找哪家微信代运营费用
  • 有了域名空间怎么做网站成都软件培训机构排名榜
  • 网站建设+廊坊学历提升机构哪家好
  • 海东企业网站建设企业网站托管服务常用指南
  • 珠海左右创意园网站开发中信建设有限责任公司海外地位
  • 网站域名注册证书查询徐州领航装饰工程有限公司
  • 简述建设一个网站的基本步骤郑州网站建设公司哪家专业
  • 做网站会犯法吗艺阳科技网站建设