我的c语言笔记---字符串
来源:互联网 发布:网络运营商选择 编辑:程序博客网 时间:2024/05/18 00:27
<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的c语言笔记,期待与您交流!
字符串(1)
"hello world!"
在所有的字符后面,有一个 '\0'的字符,成为尾零,代表字符串的末尾.
"h" 字符串由两个字符组成, 'h' '\0' 两个字节.
'h' 以数字存储的,是4个字节.
1,当我们写"hello"时,就是告诉编译器,在只读数据段存储6个字符.
只读数据段,和栈空间很远.
2,"hello"表达式的值,表示字符串第一个字符的地址,也是'h'的地址.
当我们打印printf("%c",*"hello"); 输出就是'h'
char * p = "hello world!";
p[0] 就是代表h. 但是p[0] = 'H' ;是错误的,因为 "hello world"是只读的不能修改,
例子:
char a[64] = "hello world!";
a[0] = 'H';则是正确的,因为原版的字符串还在只读数据区,而是复制了一份给了数组a[64].
在输出时,遇到'\0'就停止打印输出.
没初始化的是0.
"hello"
6字节长;
有效字节长是5,(因为不包括尾零).
有个函数专门求有效字节长. strlen( );这个函数判断到第一个\0之前的字符串的长度.
字符串(2)
atoi( ) ;
int atoi(const char *str); //传入一个字符串的地址,返回一个整形
1,当碰到非法字符返回,
2,s碰到第二个'-'返回.
int strcmp(const char* s1,const char *s2)
传入两种字符串,如果s1>s2 返回正数,s1<s2,返回负数,相等返回0
先比较两个字符串的第一个字符的Ascll码,那个Ascll码大,哪个就是大.以此类推.
字符串(3)
strcpy(char *s1, const char* s2);
s1需有足够装下s2空间的。
char * p = "hello world";
char buf[64] = {};
char *q;
char *ret = strcpy(buf , p);//正确
strcpy(q,p);//错误,因为不确定,q指向的是哪里。
printf("%s\n",buf);
strcat( char * restrict s1, const char *restrict s2); .//字符串的拼接
char buf [64] = "hello";
char *p = "world!";
strcat(buf,p); //形成新的字符串,buf的空间足够大,能装下拼接后的字符串。
strstr(const char *p1,const char *p2) ; //字符串查找。
char *q = "hello";
char *p = "world";
char *ret = strstr(p,q);
if(ret != null){
printf("%s\n",ret); //返回第一个符合q字符串的q字符串的字符的地址。
}
字符串(4)
字符串分割
char * strtok(char *restrict str,const char *restrict sep);
第一个字符串是可变字符串。
char buf[] = "I am a so bad man.";
char *p = "I am a so bad man.";
char * ret = strtok(buf," ");//分隔符。
printf("%s\n",ret);
ret = strtok(NULL,“ "); //NULL,是继续分割的意思。
ret= strtok(p," ");//分割新的字符串。但是p不能分割,因为p是不可变。
实际效果是把分隔符,变成了\0,
char buf[] = "welcome to qianfeng";
char * p = buf;
while(1){
p = strtok(p, " ");
// p = strtok(p, ", ");
if(!p)
break;
printf("%s\n",p);
q[i++] = p;
p = NULL;
}
for(i = 0; i<5;i++)
{
if(q[i]){
printf("%d\n",q[i]);
}
}
- 我的c语言笔记---字符串
- 我的c语言笔记
- C语言笔记-字符串
- 【笔记-C语言】 字符串
- 我的c语言笔记---- 指针
- 我的c语言笔记--函数
- 我的c语言笔记---位运算
- 我的c语言笔记--枚举
- 我的c语言笔记---预编译
- 我的c语言笔记---文件管理
- 我的C语言复习笔记
- 我的C语言笔记1
- 010-字符串-C语言笔记
- 我的c语言
- 我的c语言
- 我的c语言
- 我的C语言
- 我的C语言
- sphinx php api使用讲解
- 彩票审计风暴起 万亿巨资去那里?
- 安慰奶牛
- linux find command
- 2.ios拖控件
- 我的c语言笔记---字符串
- 设计模式 观察者模式
- 代码高亮之prettify
- 从写软件到买软件2
- uvaoj 10130-SuperSale 动态规划
- uva 11151(dp)
- centos 安装yum
- 安装linux发生的无法引导windows以及windows分区变为raw的解决
- SQL Server 服务器更名及添加Windows登录名