A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 米匠 中级黑马   /  2014-10-9 16:34  /  941 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、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个字节,分别为jack\0\0ASCII        //码为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;
}

评分

参与人数 1技术分 +1 收起 理由
星河鹭起 + 1

查看全部评分

3 个回复

正序浏览
总结的很到位!!!
回复 使用道具 举报
米匠 发表于 2014-10-9 16:37
很不错,有用,,,,,感谢分享

什么时候给自己评论了一下??????:o
回复 使用道具 举报
很不错,有用,,,,,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马