c语言数组与字符串,C语言字符数组
字符和字符串 C语言教程 C语言系列教程
第10章字符数组和字符串1。字符数组和字符串的重新定义。字符数组是字符串吗?有人说是,因为书上写的,老师教的。潇雅不敢说书或老师错了,但至少可以说,许多初学者混淆了这两个概念。所以这里就把这两个概念搞清楚了。
字符数组,完全称为字符类型数组。字符数组不一定是字符串。是最后一个字符为空的字符数组。该字符串必须是字符数组。数组的长度是固定的,任何一个字符都可以为空。字符串只能以NULL结尾,后续字符不属于该字符串。rlen()等字符串函数完全适用于字符串,但不适用于不是字符串的字符数组。
#包含stdio.h
#包含字符串. h
int main(void)
//这是将初始值赋给字符数组的方法
char cArr[]={Q , U , A , N , X , U , E };
//这是将初始值赋给字符串的方法
char sArr[]=全学;
//用sizeof()求长度
printf( cArr=% d \ n 的长度,sizeof(cArr));//长度是7
printf( sArr的长度=%d\n ,sizeof(sArr));//长度为8,最后一位为空
//用printf的%s打印内容
printf( cArr=% s \ n 的内容,cArr);//无法正确显示
printf( sArr=% s \ n 的内容,sArr);//可以正确显示
//用strlen()求长度
Printf(长度为 carr=%d\n ,strlen(cArr));//结果不正确
printf( sArr长度=%d\n ,strlen(sArr));//NULL不在计算范围内
返回0;
}从上面的例子来看,注意以下几点:
char sArr[]=全学;这样,在编译结束时会自动添加一个空字符。空字符,即 \0 ,在ASCII表中排在第一位,用十六进制表示为0x00。sizeof()运算符寻求字符数组的长度,而不是字符串的长度。strlen()函数寻找字符串长度,而不是字符数组。它不适用于字符串以外的类型。char sArr[]=全学;也可以写成char sArr[8]=全学;(注:是8而不是7)二。字符串数组字符串数组是一个二维字符数组。同理,二维字符数组不一定是字符串数组。
#包含stdio.h
int main(void)
int I;
//这是给字符数组赋初值的方法,维度:4x2
char cArr[][2]={{Q , U},
{A , N},
{X , U},
{E , \ 0 } };
//这是给字符串数组赋初值的方法,维度:4x3
char sArr[][3]={ 曲,安,徐, e };
//用sizeof()求长度
for(I=0;i i ) {
printf(%d: %d %d\n ,I,sizeof(cArr[i]),sizeof(sArr[I]);
printf([%s] [%s]\n ,cArr[i],sArr[I]);
返回0;
}从上面可以看到,cArr[i]的长度是2,sArr[i]的长度是3,因为多了一个空字符。输出cArr[i]时,因为中间没有空字符,所以一直显示到出现NULL。
3.在字符数组和字符串数组转换后的字符数组中插入一个空字符。空字符的前面(包括空字符)成为字符串。通常,空字符被插入到有效字符的末尾。
#包含stdio.h
#包含字符串. h
int main(void)
//因为末尾有NULL,所以这就成了一个字符串
char cArr[]={Q , U , A , N , X , U , \ 0 };
//因为少定义了一位,末尾也没有空,所以这就成了一个字符数组。
char sArr[7]=全学;
//最后一个元素没有赋值
char tArr[16]= www . quan Xue . cn ;
//用sizeof()求长度
printf(cArr: -,-\n ,strlen(cArr),sizeof(cArr));
printf(sArr: -,-\n ,strlen(sArr),sizeof(sArr));
printf(tArr: -,-\n ,strlen(tArr),sizeof(tArr));
//赋值tArr的最后一个元素,字符串变成字符数组。
塔尔[15]=!;
//作为字符数组,将显示16个字符
for(I=0;i i ) printf(%c ,tArr[I]);//字符数组的显示方法
//作为字符串,将显示14个字符。
printf(\n%s\n ,tArr);//字符串的显示方法
返回0;
}四。数组的输入输出“gets()、puts()”getchar()和putchar()函数是单个字符的输入输出,GETS()和PUTS()是字符串的输入输出,也是标准函数。它们在stdio.h中定义
#包含stdio.h
int main(void)
char str[80],* p;
p=gets(str);
看跌期权(p);
卖出(str);
printf( p=% p的地址,str=%p\n 的地址,p,str);
返回0;
}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。