Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29336676
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类: C/C++

2010-01-25 23:15:56

C语言字符串

[整理人: 时间:2010-1-25

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对象
  所需的头文件名称               
为什么需要头文件       为了使用字符串函数            为了使用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);

}

PSC语言一定要注意变量的初始化。如果没有初始化的话就会出莫名的问题!

 

 

 

附: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); 

阅读(861) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~