C语言之字符串
文章链接:http://blog.csdn.net/qq_16628781/article/details/72331637
知识点
- 字符串的概念和定义;
- 字符串的操作;
- 新名词记录{指针}
概述
在每种编程语言中,必然会使用到字符串,或者对字符串的操作。那么在C语言中的字符串又是怎样的呢?
知识理解阶段
C语言中的字符串,和Java中的不一样就是关键字。C语言中利用“char”,而Java中使用string。
C语言中定义字符串如下:
相当于用一个数组来存放一个字符串,例如下面存放的greeting[6],分别是利用6个内存地址存放着’H’,’E’,’L’,’L’,’O’,’\0’,6个字符串,他们在greeting下面的下标从0-5,但是并不能利用下标来访问每一个字符。其中,C 编译器会在初始化数组时,自动把 ‘\0’ 放在字符串的末尾。
//字符串
char greeting[6] = {'H','E','L','L','O'};
char greet[] = "hello";
char str1[] = "str1";
char str2[] = "str2";
//打印,%s是从,号后面取得一个字符串,拼接起来并打印
printf("greeting[6]:%s\n", greeting);
//输出为:greeting[6]:HELLO
字符串的操作函数
在C语言的基本函数库中,给我提供了不少关于字符串的操作函数。比较常用的有以下几个函数:
- 字符串复制:
strcpy(s1, s2);
//复制字符串 s2 到字符串 s1。
- 字符串连接:
strcat(s1, s2);
//连接字符串 s2 到字符串 s1 的末尾。
计算字符串长度
strlen(s1); //返回字符串 s1 的长度。
字符串比较
strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回小于 0;如果 s1>s2 则返回大于 0。
- 寻找给定字符串所在的位置
strchr(s1, ch);
//返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
//或者
strstr(s1, s2);
返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
看了这么多,我们可以拿来练一下手。
void strTest(){
printf("greeting[6]:%s\n", greeting);
//输出:greeting[6]:HELLO
strcpy(str1, str2);
printf("字符串复制,str1,msg : %s\n", greeting);
//输出:字符串复制,str1,msg : HELLO
int lenght = strlen(str1);
printf("字符串长度,lenght:%d\n", lenght);
//输出:字符串长度,lenght:4
strcat(str1, str2);
printf("连接两个字符串:%s\n", str1);
//输出:连接两个字符串:str2str2
int result = strcmp(str1, str2);
printf("比价两个字符串,相同返回0,参数1<参数2,返回<0,否则返回>0。结果:%d\n", result);
//输出:比价两个字符串,相同返回0,参数1<参数2,返回<0,否则返回>0。结果:-1
char *s = "0123456789";
char *p;
p = strchr(s, '5');
printf("%s\n", s);//结果:0123456789
printf("%s\n", p);//结果:56789
printf("%ld\n", *p);//和%有关系,结果:53
printf("%ld\n", p);//和%有关系,输出的是内存地址:4513410940
const char str[] = "http://www.w3cschool.cc";
const char ch = '.';
char *ret;
ret = strchr(str, ch);
printf("|%c| 之后的字符串是 - |%s|\n", ch, ret);
//结果:.w3cschool.cc
}
结果已经打印在每句话后面了。可以对照着看。
总结
其实字符串是比较好理解的一个概念。只是对于如何操作字符串,个人觉得是有点羞涩难懂的感觉,相对于Java来说。语法上有点不太一样,概念也有不少差异。
在对于字符串操作,C语言提供了很多现成的函数可以调用,有兴趣的同学可以去瞧瞧。
以上就是全部内容,如有任何问题,请及时与我联系。谢谢。