黑马程序员技术交流社区
标题: C语言笔记--字符串-供参考 [打印本页]
作者: 米匠 时间: 2014-10-9 16:34
标题: C语言笔记--字符串-供参考
一、C语言是使用字符类型数组来实现字符串的
char name[10] = “jack”;
//等同char name[] = “jack”;
//等同char name[10] = {‘j’, ‘a’,‘c’, ‘k’, ‘\0’};
//或char name[10] = {‘j’, ‘a’,‘c’, ‘k’, 0};
//name数组长度为10,实际占了5个字节,分别为j、a、c、k、\0,\0的ASCII //码为0,可以使用ASCII码值代替字符
printf(name);
//printf默认只接收常量字符串,放变量编译会警告,但可以通过
char name2[] = {‘i’, ‘t’}; //不能当作字符串来用,因为没有结束符号\0,所以这只是一个字符类型数组
二、输出字符串
int main()
{
char name[] = “itcast”;
printf(“我在%s上课\n”, name);
}
三、修改字符串中的某一位字符
char name[] = “itcast”; //等同char name[] = {‘i’, ‘t’, ‘c’, ‘a’, ‘s’, ‘t’, ‘\0’};
name[3] = ‘H’;
四、\0的作用
\0是字符串结尾的标示符
int main()
{
char name[] = “it”; //字符串
char name2[] = {‘o’, ‘k’}; //这仅仅是一个字符数组,因为没有结束符号”\0”或0
printf(“%s\n”, name); //输出的是it (name作为字符串传给函数printf)
printf(“%s\n”, name2); //输出的是okit (name2作为数组指针传给printf函数,printf函数中规定输出字符串,遇到”\0”结束输出)原因见下图,内存示意
}
如上图内存示意图可知,从地址ffc4开始输出,一直到ffc8结束
如果name字符串中含有字符”\0”,比如name为”itc\0ast”,那么printf(“%s\n”, name2);会输出okitc,遇到第一个”\0”结束输出。
五、strlen函数
头文件#include <string.h>
strlen 区别于 sizeof,因为strlen不计算\0,而sizeof计算\0
strlen计算的是不带\0的字符数,sizeof计算的是带\0的字节数
#include <string.h>
#include <stdio.h>
int main()
{
int size = strlen(“haha”);
printf(“%d\n”, size); //输出为4
return 0;
}
int main()
{
char name[] = “itca\0st”;
int size = strlen(name);
printf(“%d\n”, size);
return 0;
}
上面的代码中输出的是4,所以可以看出strlen()函数的原理是从数组name的地址开始计算到\0结束的长度
六、输出字符串中某一个字符
int main()
{
char name[] = "itcast";
printf("%c\n", name[4]); //输出为s,字符串就是一个字符数组,最后一位为”\0”
}
七、字符串数组
#include <string.h>
#include <stdio.h>
/*
字符串数组即字符型二维数组
*/
int main()
{
char name1[] = "jack";
char name2[] = "rose";
char names[2][10] = {"jack", "rose"}; //等同于下边的写法
/*
char names[2][10] =
{
{'j', 'a', 'c', 'k', '\0'},
{'r', 'o', 's', 'e', '\0'}
}
*/
printf("%s\n", names[1]); //输出第二个字符串
return 0;
}
作者: 米匠 时间: 2014-10-9 16:37
很不错,有用,,,,,感谢分享
作者: 米匠 时间: 2014-10-9 16:48
什么时候给自己评论了一下??????:o
作者: gululu23 时间: 2014-10-9 17:16
总结的很到位!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |