您的位置:首页 > 编程语言 > C语言/C++

(三)黑马程序员——c语言之字符串处理函数

2015-10-21 07:38 302 查看
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

例3、用一个程序将所有常用字符串处理函数都写出来。

源代码实现及知识点拓展

1、程序源代码

#include <stdio.h>

#include <string.h>

int len1,len2;

int main(int argc,constchar * argv[])

{

//定义字符数组

char str1[100] ="we are the best";

char str2[100];

//从键盘上接受一个字符串

printf("请从键盘上输入一个字符串:\n");

gets(str2);

//输出字符串

printf("str1= %s\n",str1);

printf("str2 = ");

puts(str2);

printf("\n");

//计算字符串长度

len1 =
strlen(str1);

len2 =
strlen(str2);

printf("str1的长度=
%d,str2的长度 = %d\n",len1,len2);

//字符串连接

printf("strcat(str1,str2) = %s\n",strcat(str1,str2));

//字符串拷贝

printf("strcpy(str1,str2) = %s\n",strcpy(str1,str2));

return
0;

}

2、知识点拓展

2.1
1.#include <stdio.h>
#include <string.h>


文件包含(#include)

注:这个知识点的详情请见我的第一篇博文《黑马程序员——c语言之switch与if的使用比较》。若程序有字符串处理函数时,需引用#include<string.h>头文件。

2.2
2.//定义字符数组
char str1[100] = "we are the best";
char str2[100];
字符数组的定义及初始化

1、定义字符数组时,应确保数组长度比字符串长度至少多1

2、定义的同时进行初始化

方法一:char c[5] = {'l','o','v','e'};//当对全体元素赋值也可以省去长度说明。

方法二:char c[5] = {"love"};

方法三:char c[] ="love";//这种方法最简便,我最喜欢使用这方法

2.3

3.//从键盘上接受一个字符串
printf("请从键盘上输入一个字符串:\n");
gets(str2);

字符串输入函数gets

从标准输入设备键盘上输入一个字符串。

注意:(1)、与getchar()用法的区分,getchar有返回值,char a = getchar();而gets没有返回值,用法是gets(a);

(2)、gets函数得到一个函数值,即为该字符数组的首地址

(3)、当输入字符串中含有空格时,输出仍为全部字符串,说明gets函数只以回车作为输入结束。这与scanf函数不同

(4)、这是个不安全的输入函数,会产生越界问题

2.4

4.//输出字符串
printf("str1= %s\n",str1);
printf("str2 = ");
puts(str2);
printf("\n");


字符串输出函数puts

把字符数组中的字符串输出显示器。

注意:从程序中可以看出puts函数中可以使用转义字符,因此输出结果成为两行。puts函数完全可以由printf函数取代。当需要一定格式时,通常使用printf函数。

2.5

5.//计算字符串长度
len1 = strlen(str1);
len2 = strlen(str2);
printf("str1的长度 = %d,str2的长度 = %d\n",len1,len2);


测量字符串长度函数strlen

long int strlen(char *),测量字符串长度(不含字符串结束标志'\0')并作为函数返回值。

2.6

6.//字符串连接
printf("strcat(str1,str2) = %s\n",strcat(str1,str2));


字符串连接函数strcat

char * strcat(char * str1,char * str2),把字符数组str2的字符串连接到字符数组str1中字符串的后面,并删去str1的串标志“\0”。本函数返回值是字符串str1的首地址。str1需定义的足够的长度,以便全部装入被连接的字符串。

2.7

7.//字符串拷贝
printf("strcpy(str1,str2) = %s\n",strcpy(str1,str2));


字符串拷贝函数strcpy

char * strcopy(char * str1,char * str2),把str2的字符串拷贝到str1中。串结束标志“\0”也一同拷贝。str2也可以是一个字符串常量。这里相当于被一个字符串赋予一个字符数组。

2.8

字符比较函数strcmp

注:该知识点的具体用法将在我的下个博客里呈现出来。int strcmp(char * str1,char * str2),按照下标顺序比较两个字符串中的相同下标的每一个字符,并且返回第一对不相同的字符ASCII码差值(str1-str2)。若直到\0都相同,那么返回0

3、心得体会:

1、在这个例题里,我将字符数组及几乎所有常用的字符串处理函数都结合起来,若初学者看到我这篇博文,能精通这个例题,字符串方面的知识就基本上没问题。

2、这是我的第3个博客,通过三个博文中自己设计出的三个例题,我将c语言的大部分基础知识已经复习的差不多了,后面我将用一个博文综合出c语言剩下的知识点(结构体,typedef,文件等)。

3、刚开始很抵触黑马程序员的这种入学考核方法,当我逐渐走过来时,发现自己无论是在理论常识上,还是在编程思维上明显感觉进步非常大,很感谢黑马程序员。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: