学习c语言的第12天

紧接上文

案例:学习字符串的多种输入输出函数,以及字符串常见处理函数

         char 类型,默认值就是 '\0',它表示字符串的结束符。这是 C 语言中处理字符串的一种约定,以 '\0' 作为字符串的结束标志,方便对字符串进行操作和处理。

        所以,在这种初始化方式下,str 数组的第一个元素被显式地初始化为 '\0',而其余 127 个元素会自动被初始化为 '\0',使得整个数组初始时表示一个空字符串。这样的初始化方式可以确保数组在使用前处于一个确定的状态,避免未初始化的内存带来的潜在问题。

        scanf("%s", str):用于从标准输入读取一个字符串,遇到空白字符(如空格、制表符、换行符)就会停止读取,并将读取的字符串存储到 str 数组中。

        gets(str):从标准输入读取一行字符串,直到遇到换行符为止。它会将读取的字符(不包括换行符)存储到 str 数组中,并在字符串末尾自动添加 '\0'。不过,gets 函数存在安全风险,因为它不会检查输入字符串的长度,可能导致缓冲区溢出。gets 函数存在安全隐患,在实际编程中建议使用更安全的 fgets 函数来替代。

strcpy(str, p):将 p 所指向的字符串复制到 str 数组中。

strncpy(str, p, 6):将 p 所指向的字符串的前 6 个字符复制到 str 数组中。如果复制的字符数不足 6 个,不会自动添加 '\0';如果超过 6 个,则只复制前 6 个字符。

拷贝操作会覆盖目标字符串原来的内容

自己实现strcpy和strncpy函数(面试喜欢拷打)

关于这部分内容我也有放在另外一个专栏里面

要知道字符串最后面都是会有一个'\0'为结束符的

char arr[5]={1,2,3,4,5};这个可不是字符串,这个只是个普通的字符数组

char arr[6] = {1, 2, 3, 4, 5, '\0'};这个是字符串,数组 arr 会在最后位置存储一个 '\0',使其成为一个合法的 C 字符串。

des++ 操作会使指针先移动到最后一个有效字符后面的下一个位置。

*des = '\0' 会将 \0 放到这个新位置,即最后一个有效字符后面的那个位置。

如果src全部取完之后  des和src的指针也会继续往后偏移一位,然后不成立*src!='\0'&& count>0这个条件之后,执行*des='\0';然后就满足字符串最后以\0为结束的特点了

assert断言(面试拷打点)

字符串的拼接操作strcat以及自我实现

  • 字符串拷贝:直接从目标字符串的起始位置开始覆盖写入源字符串内容,不需要遍历目标字符串。
  • 字符串拼接:需要先将目标字符串的指针移动到其末尾,然后再添加源字符串的内容,因此需要遍历目标字符串。

字符串比较strcmp函数的使用和strcpm函数的自我实现

要点

第一个while:此 while 循环的目的是逐个字符比较 str1 和 str2 所指向的字符串,直到满足以下条件之一时停止:

  1. 其中一个字符串到达结束符 '\0'
  2. 两个字符串对应位置的字符不相等。

第二个if: *str1 或者 *str2 为 true,就把 str1 和 str2 指针重置为初始位置(bakStr1 和 bakStr2),然后分别遍历两个字符串,将每个字符的 ASCII 码值累加到 n_str1 和 n_str2 中。

第三个while:这两个 while 循环分别用于遍历 str1 和 str2 所指向的字符串,将每个字符的 ASCII 码值累加到 n_str1 和 n_str2 中,直到遇到字符串结束符 '\0' 为止。

下一章就到结构体了,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值