10.物联网学习之字符串

  1. 无限循环

(1)for(;;){}

(2)while(1){}

(3)out:

goto out;

  1. 输入输出的问题

int a[5]={1,2,3,4}; //整数数组不会自带’\0’

char a[5]={‘H’,’e’,’l’,’l’,’0’}; //字符数组这样定义没有’\0’

char a[5]={‘H’,’e’,’l’,’l’,’0’,’\0’};//正确写法末尾加’\0’

char a[]={“Hello”}; //字符数组这样定义会有’\0’ 

注意scanf()输入遇空格就会默认字符串结束

gets()输入只有遇回车才会认为字符串结束

综上结论:

  1. scanf()输出a[5]={‘H’,’e’,’l’,’l’,’0’},由于后面没有’\0’所以可能一直结束不了,出现乱码
  2. scanf()输出char a[]={“Hello”},后面有’\0’,所以不会乱码
  3. puts()与scanf()一样,遇’\0’才停止

3.字符串常用函数

#include <string.h>

  1. 求字符串长度的函数strlen 即(找到\0为止)

返值:返回字符串实际长度,不包括‘\0’在内

例子:对于以下字符串,strlen(s)的值为:

  1. char  s[10]={‘A’,‘\0’,‘B’,‘C’,‘\0’,‘D’};

‘\0’截至,所以长度1

  1. char  s[ ]=“\t\v\\\0will\n”;

‘\0’截至,所以长度3

  1. char  s[ ]=“\x69\141\n”;

\xhh表示十六进制数代表的符号

\ddd表示8进制的

\x69一个,\141两个,\n三个,所以长度3

4) char aa[10];

printf("%d",strlen(aa));

不赋值的话一直在寻找’\0’,所以随机值

  1. 字符串拷贝函数strcpy

格式:strcpy(字符数组1,字符串2)

功能:将字符串2,拷贝到字符数组1中去

返值:返回字符数组1的首地址

说明:

1)字符数组1必须足够大

‚ 2)拷贝时‘\0’一同拷贝

  1. 字符串连接函数strcat

格式:strcat(字符数组1,字符数组2)

功能:把字符数组2连到字符数组1后面

返值:返回字符数组1的首地址

说明:

    1)字符数组1必须足够大

    2)连接前,两串均以‘\0’结束;连接后,串1的’\0’取消,新串最后加‘\0’(所以注意字符串a[5]={‘H’,’e’,’l’,’l’,’0’}没有’\0’问题)

(4)字符串比较函数strcmp(字符串1,字符串2)

(ASCII码)从左到右对比

a. 若字符串1< 字符串2, 返回负整数

b. 若字符串1> 字符串2, 返回正整数

c. 若字符串1== 字符串2, 返回零

(5)补充函数

strncpy(p, p1, n) 复制指定长度字符串

strncat(p, p1, n) 附加指定长度字符串

strcasecmp忽略大小写比较字符串

strncmp(p, p1, n) 比较指定长度字符串

strchr(p, c) 在字符串中查找指定字符

strstr(p, p1) 查找字符串

  1. 补充函数

#include<ctype.h>

isalpha() 检查是否为字母字符

isupper() 检查是否为大写字母字符

islower() 检查是否为小写字母字符

isdigit() 检查是否为数字

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值