全部博文(2065)
分类: C/C++
2010-01-25 23:15:56
C语言字符串
[整理人: 时间:
在C中,并没有字符串这个数据类型,而是使用字符数组来保存字符串。C字符串实际上就是一个以null('\0')字符结尾的字符数组,null字符表示字符串的结束。需要注意的是:只有以null字符结尾的字符数组才是C字符串,否则只是一般的C字符数组。
C字符串定义时可以利用"="号进行初始化,但是以后不能利用"="对C字符串进行赋值。对C字符串的操作需要通过"string"文件中定义的字符串处理函数。
//字符串的初始化
char a[11] = "huanying"; //可以直接赋值给一个字符串变量的
//字符串的赋值
strcpy(a,"nihao") 通过字符串函数进行赋值处理
//获取字符串的长度,不包括'\0'在内
strlen(a); //字符串的长度
printf("%s",a);
示例
#include
main(){
char a[11] = "abck"; //设置好一个字符串
printf("%s",a); //打印出来
}
在C中也可以使用字符指针来访问一个字符串,通过字符指针指向存放字符串数组的首元素地址来进行访问.
char *a = "nihao";
printf("%s",a);
在C++中则把字符串封装成了一种数据类型string,可以直接声明变量并进行赋值等字符串操作。(其实在JAVA中也是一样的有字符串类型的变量)
以下是C字符串和C++中string的区别:
C字符串
string对象
所需的头文件名称
如何声明
char
name[20];
string name;
如何初始化
char name[20]="nihao"; string name = "nihao";
必须声明字符串长度么? 是
否
使用一个null字符么? 是
否
怎样实现字符串赋值
strcpy(name,"John");
name = "John";(C中不可用=赋值)
其他优点
更快
更易于使用,优选方案
可以赋一个比现有字符更 不能
可以
长的字符串么?
PS:
1、 声明 char name[20];
2、 初始化 char name[20]="nihao"; 还可char *a = "nihao"; 用指针的方法初始化
3、 字符串赋值 strcpy(name,"John");
示例代码:
#include
main(){
char b[20] = "abcd";
printf("%s",b);
}
#include
#include
main(){
char name[50] = ""; //注意C语言是强类型的一定要事先声明好变量
strcpy(name,"John"); //直接复制
printf("%s",name);
}
#include
#include
main(){
char name[50] = "";
int leng = 0;
strcpy(name,"John");
leng = strlen(name);
printf("length of is %d",leng);
printf("%s",name);
}
PS:C语言一定要注意变量的初始化。如果没有初始化的话就会出莫名的问题!
附:C语言字符串常用的函数
函数名: stpcpy
功 能: 拷贝一个字符串到另一个
用 法: char *stpcpy(char *destin, char
*source);
函数名: strcat
功 能: 字符串拼接函数
用 法: char *strcat(char *destin, char
*source);
函数名: strchr
功 能: 在一个串中查找给定字符的第一个匹配之处\
用 法: char *strchr(char *str, char
c);
函数名: strcmp
功 能: 串比较
用 法: int strcmp(char *str1, char
*str2);
看Asic码,str1>str2,返回值 > 0;两串相等,返回0
函数名: strncmpi
功 能: 将一个串中的一部分与另一个串比较, 不管大小写
用 法: int strncmpi(char *str1, char
*str2, unsigned maxlen);
函数名: strcpy
功 能: 串拷贝
用 法: char *strcpy(char *str1, char
*str2);
函数名: strcspn
功 能: 在串中查找第一个给定字符集内容的段
用 法: int strcspn(char *str1, char
*str2);
函数名: strdup
功 能: 将串拷贝到新建的位置处
用 法: char *strdup(char *str);
函数名: stricmp
功 能: 以大小写不敏感方式比较两个串
用 法: int stricmp(char *str1, char
*str2);
函数名: strerror
功 能: 返回指向错误信息字符串的指针
用 法: char *strerror(int errnum);
函数名: strcmpi
功 能: 将一个串与另一个比较, 不管大小写
用 法: int strcmpi(char *str1, char
*str2);
函数名: strncmp
功 能: 串比较
用 法: int strncmp(char *str1, char
*str2, int maxlen);
函数名: strncmpi
功 能: 把串中的一部分与另一串中的一部分比较, 不管大小写
用 法: int strncmpi(char *str1, char
*str2);
函数名: strncpy
功 能: 串拷贝
用 法: char *strncpy(char *destin, char
*source, int maxlen);
函数名: strnicmp
功 能: 不注重大小写地比较两个串
用 法: int strnicmp(char *str1, char
*str2, unsigned maxlen);
函数名: strnset
功 能: 将一个串中的所有字符都设为指定字符
用 法: char *strnset(char *str, char ch,
unsigned n);
函数名: strpbrk
功 能: 在串中查找给定字符集中的字符
用 法: char *strpbrk(char *str1, char
*str2);
函数名: strrchr
功 能: 在串中查找指定字符的最后一个出现
用 法: char *strrchr(char *str, char
c);
函数名: strrev
功 能: 串倒转
用 法: char *strrev(char *str);
函数名: strset
功 能: 将一个串中的所有字符都设为指定字符
用 法: char *strset(char *str, char
c);
函数名: strspn
功 能: 在串中查找指定字符集的子集的第一次出现
用 法: int strspn(char *str1, char
*str2);
函数名: strstr
功 能: 在串中查找指定字符串的第一次出现
用 法: char *strstr(char *str1, char
*str2);
函数名: strtod
功 能: 将字符串转换为double型值
用 法: double strtod(char *str, char
**endptr);
函数名: strtok
功 能: 查找由在第二个串中指定的分界符分隔开的单词
用 法: char *strtok(char *str1, char
*str2);
函数名: strtol
功 能: 将串转换为长整数
用 法: long strtol(char *str, char
**endptr, int base);
函数名: strupr
功 能: 将串中的小写字母转换为大写字母
用 法: char *strupr(char *str);
函数名: swab
功 能: 交换字节
用 法: void swab (char *from, char *to,
int nbytes);