C语言字符串学习小结
(2010-11-20 19:39:32)
标签:
字符串字符数组构造函数it |
分类: 编程经验--积跬步至千里 |
编程小经验:
遇到LNK2001错误,重建一个新的工程,正确。
1.int isspace() (函数名以is开头的,包含在ctype.h中)
#include<ctype.h>
int isspace(int ch);
如果参数是空格类字符,返回非0(个人测试结果返回8,即ture)。否则返回0(false)。
空格类字符包括单空格'
'(32),制表符'\t'(9),垂直制表符'\v'(11),满页符'f'(12),回车符'\r'(13),新行符'\n'(10)),但是不包括'\0'(0)。
2.strtok()这是一个副作用超强的函数。
#include<string.h>
(函数名以str开头的,多数包含在string.h中)。
char *strtok(char *str1,const char *str2);
连续使用此函数,用str2中的任一字符作为分隔符,将str1分成许多单词(token)。
具体原理:在str1中,将所有str2中出现过的字符替换为'\0',这样整个字符串就被分为多个词条。然后从头到尾扫描,把多个'\0'看成一个,读出其中的词条。除最后一个词条为空串(NULL)外,其它词条都非空。
注意,从(意义上连续的)第二次调用开始,每次str1要设为NULL,意思就是从上一次token结束跳过若干'\0'后开始。
必须注意的是,只要调用这个函数,str1的值就会被改变。
如:char str[] = "bgfbtt";
strtok(str,"b");
分割得到的词条是"gf","tt",而str第一次调用就变成"bg",这里的b竟然还存在,不知是为什么。
3.关于字符数组和字符串(C string)的区别。在C语言函数声明中,如果是const
char*,则对应的参数叫做字符串常量,在使用时直接定义char *str = "abc"就可以。如果是char
*,则有两种情况,一种是参数本身就是一个指针,另一种是它代表的是一个数组。如果是指针,需要定义一个指针即可。但如果是数组,使用时要先定义数组,然后初始化后将数组名作为参数使用。
4.构造函数和初始化函数的区别
前一篇:我的品牌
后一篇:谷歌中国五大研发领域