字符串:以0结束的字符数组。
注意这里的0是数字0而不是字符0,其ASCII码值为48
char s[5] = {‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘E‘};//字符数组
char s[5] = {‘A‘, ‘B‘, ‘C‘, ‘D‘, ‘0‘};//字符数组
char s[5] = {‘A‘, ‘B‘, ‘C‘, ‘D‘, 0};//字符串
char s[5] = "ABCD"; //字符串,与上一行完全等价
字符串常量是""所括起来的,其最后一定存在一个看不见的\0作为结束标志
对于字符串的处理,必须遇\0就止
char s[6] = "abcdef";//语法错误,存储长度超过数组的长度
char s[] = "abcd0123\0XYZ\0\0";
printf("%d %d\n", sizeof(s), strlen(s));
上述的输出结果:sizeof(s)是15,strlen(s)是8
由上可知,字符串遇到\0就截止了,其后长度未被计算进去
总结:
sizeof()的用法
sizeof()是一个运算符,不是一个函数,它有以下三种用法:
- sizeof(数据类型名称),测的结果是数据类型所占的字节数
2.sizeof(变量名称或者数组名称),测得结果是变量或者数组所申请的空间
char a; sizeof(a)==>1
short a; sizeof(a)==>2
int a[20]; sizeof(a)==>80
3.sizeof(字符串名称),测得结果是字符串的长度+1(所加的一字节就是结束表示\0)
strlen()的用法:
strlen()是专门测量字符串长度的函数,使用前需要在函数前加上
#include<string.h>这个头函数,它测得结果不包括\0这个字符串长度
字符串程序设计实例:
从键盘输入一串字符,要求逐字符逐行输出,例如:输入abcd,则输出为
a
b
c
d
程序:
char shit[80];
int i;
scanf("%s", shit);//%s使用时,对应为数组的数组名字,不用加取地址符号&
//这种做法输入时候不能有空格,遇到空格即输入结束
for(i = 0; shit[i];i++)//数组的最后一个字符为0
printf("%c\n", shit[i]);