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

嵌入式学习之路 15(C语言基础学习——指针操作一维字符型数组)

  1. 字符型数组的定义和初始化

    • char s[] = "hello";:在栈上开辟空间并初始化。
    • const char *p = "hello";:指针 p 指向字符串常量区的 "hello",只能读取不能修改。
  2. 指针变量的类型确定

    • 指针变量的类型由其所指向的数据的类型决定。
    • 例如,char * 指向字符型数据,int * 指向整型数据。
  3. 处理字符串的方式

    • 直接定义字符数组存储字符串。
    • 使用指针指向字符串常量。
  4. const 关键字

    • const 用于限定变量或指针的只读属性。
    • 如 const int a; 表示 a 是只读变量。
    • const char *s 和 char const *s 表示不能通过 *s 修改所指向的字符。
    • char * const s 表示指针 s 本身不能被修改。
    • const int * const s 表示指针和所指向的内容都不能被修改。
#include <stdio.h>
#include <string.h>// 从标准输入获取字符串并存储到指定字符数组
char * Gets(char *s)
{char *ret = s;while ( (*s = getchar())!= '\n' ){s++;}*s = '\0';return ret;
}// 输出字符串
int Pust(const char *s)
{while ( *s!= '\0' ){putchar(*s);s++;}printf("\n");return 0;
}// 计算字符串长度
size_t Strlen(const char *s)
{const char *ret = s;while ( *s!= '\0'){s++;}return s - ret;
}// 连接两个字符串
char *Strcat(char *dest, const char *src)
{char *ret = dest;while ( *dest!= '\0' )dest++;while ( *src!= '\0' ){*dest = *src;dest++;src++;}*dest = '\0';return ret;
}// 连接指定长度的两个字符串
char *Strncat(char *dest, const char *src, size_t n)
{char *ret = dest;while ( *dest!= '\0' )dest++;while ( *src!= '\0' && n ){*dest = *src;dest++;src++;n--;}*dest = '\0';return ret;
}// 复制字符串
char * Strcpy(char *dest, char *src)
{char *ret = dest;while( *src!= '\0' ){*dest = *src;dest++;src++;}*dest = '\0';return ret;
}// 复制指定长度的字符串
char * Strncpy(char *dest, char *src, size_t n)
{char *ret = dest;while( *src!= '\0' && n!= 0 ){*dest = *src;dest++;src++;n--;}while ( n ){*dest = '\0';*dest++;n--;}return ret;
}// 比较两个字符串
int Strcmp(const char *dest, const char *src)
{while ( *dest == *src && *dest!= '\0' && *src!= '\0' ){dest++;src++;}return *dest - *src;
}// 比较指定长度的两个字符串
int Strncmp(const char *dest, const char *src, size_t n)
{while ( *dest == *src && *dest!= '\0' && *src!= '\0' && n > 1 ){dest++;src++;n--;}return *dest - *src;
}// 主函数,用于测试上述函数
int main()
{// 定义并初始化字符数组 achar a[20];// 调用 Gets 函数获取用户输入并存储到 a 中Gets(a);char s[100];// 调用 Gets 函数获取用户输入并存储到 s 中Gets(s);// 调用 Strncmp 函数比较 a 和 s 的前 3 个字符,并输出结果printf("%d\n", Strncmp(a, s, 3));return 0;
}

http://www.lryc.cn/news/417393.html

相关文章:

  • C++ STL专题 list的底层实现
  • 【JavaEE】线程池
  • lvs实战项目-dr模式实现
  • JSONP跨域
  • Linux--shell脚本语言—/—终章
  • 免费代理池是什么,如何使用代理IP进行网络爬虫?
  • CAN直接网络管理(20240805)
  • HTML5+CSS3笔记(Xmind格式):第二天
  • 视频压缩文件太大了怎么缩小?6个视频压缩技巧,速度收藏起来!
  • Python接口自动化测试数据提取分析:Jmespath
  • 特种设备作业叉车司机题库及答案
  • Linux 操作系统速通
  • IIS漏洞大全(附修复方法)
  • HarmonyOS笔记3:从网络数据接口API获取数据
  • Mac 下生成core dump
  • 详解Xilinx FPGA高速串行收发器GTX/GTP(1)--SerDes和GTX的关系
  • golang实现Digest认证鉴权接口
  • 机房托管服务器说明
  • CookieMaker工作室合作开发C++项目十一:拟态病毒
  • 57、PHP 实现 从扑克牌中随机抽取5张牌,判断是不是一个顺子
  • 前端HTML+CSS查漏补缺——仿制百度搜索首页的一些思考
  • 【Python】实现一个个人理财助手小程序
  • 【GCC】结合GPT4 延迟梯度学习2:延迟梯度的计算及阈值更新
  • 灰豚数字人MotionAI大模型完成备案,模型已超百亿参数!
  • zsh 配置 docker 自动补全
  • 鸿蒙第三方应用.hap打包、安装流程。
  • leetcode:找到字符串中所有字母异位词
  • C语言学习
  • Java面试题:MySQL高频面试题
  • 使用js给数字进位,比如23333元进位成2.33万元