字符串:以0结束的字符数组。
数组
注意这里的0是数字0而不是字符0,其ASCII码值为48ide
char s[5] = {'A', 'B', 'C', 'D', 'E'};//字符数组函数
char s[5] = {'A', 'B', 'C', 'D', '0'};//字符数组spa
char s[5] = {'A', 'B', 'C', 'D', 0};//字符串设计
char s[5] = "ABCD"; //字符串,与上一行彻底等价orm
字符串常量是""所括起来的,其最后必定存在一个看不见的\0做为结束标志ci
对于字符串的处理,必须遇\0就止字符串
char s[6] = "abcdef";//语法错误,存储长度超过数组的长度string
char s[] = "abcd0123\0XYZ\0\0";it
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]);