字符串处理函数
C 函数库中提供了一些专门处理字符串的函数,非常方便,我们来看一下。
注意
在使用下列函数前,需要在头文件中包含string.h
文件。
Put 函数
put 函数,就是输出字符串
的函数。
一般形式
put (字符数组)
1 | char C[]="I am coder!" |
作用
和 printf 函数类似,只不过 put 函数直接输出字符串到终端,并且遇到\0
就自动停止输出。
可以类比的和printf("%s",字符数组名)
来记忆。
特殊
puts 函数中可以包含转义字符
1 | char C[]="no.1\nno.2"; |
gets 函数
gets 函数,就是输入字符串的函数
一般形式
gets(字符数组)
作用
从终端输入一个字符串
到字符数组,返回值是该数组的内存起始地址。
特殊
无论是 puts 还是 gets,都只能将字符串传输给一个字符数组,不能同时操作两个
1 | puts(C,D); |
如果需要使用 gets 或者 puts 输出多个字符串的,可以使用 for 循环来完成
1 | char str[3][20]; |
strcat 函数
strcat 函数,就是字符串连接函数。
一般形式
strcat(字符数组1,字符数组2)
作用
strcat 是 STRing CATenate(字符串连接)的缩写,作用是把两个字符数组
中的字符串
连接起来。
把字符数组2
接到字符数组1
的后面
,结果存放在字符数组1
中。
返回值
返回的是字符数组1的地址,可以直接在 printf 里面调用
特殊
连接的字符数组1必须足够大,否则装不下字符数组2的内容。
1 |
|
上面的例子中我们给 str1 规定了数组长度为30,如果我们不指定其字符长度呢?
如果不指定长度,那么数组的长的就是初始化时元素的个数,在上面的例子中,如果不指定 str1 数组长度是30,那么str1的长度也就是 21。
注意
所以,我么需要在将要合并的字符数组的第一个数组,指定一个可以包含所有元素的数组长度。
strcpy 函数 和 strncpy 函数
这两个函数都是字符串复制函数,strcpy
是将字符串2复制到字符数组1
中,strncpy 加了 n
之后,就是把 字符串2 的前 n 个字符
复制到数组1中。
一般形式
strcpy(字符数组1,字符数组2)
strcpy(字符数组1,字符数组2,位数)
作用
将字符数组2
中的内容或者部分内容替换或取代
字符数组1
中的内容。
运行机制
strcpy 这里的复制,可以理解为重新赋值,就是把字符数组2的内容赋值到字符数组1中,取代字符数组1中原有的内容。
strncpy 就不一样了,如果这个 n,不大于字符数组1的长度,那么就是把字符数组1的前 n 个元素替换成了字符数组2的前 n 个元素,字符数组1原有的元素将保留。
返回值
返回的是字符数组1的开始地址,可以直接在 printf 中使用。
1 |
|
strcmp 函数
用来比较字符串的函数
一般形式
strcmp(字符串1,字符串2);
1 | strcmp("China",str1); |
作用
strcmp 是 string compare(字符串比较)的缩写,用来比较字符串1和字符串2,如果字符完全相同,则认为两个字符相等,如果不同,则以第一次出现不同的字符的比较结果为准。
比较规则
如果字符串1 = 字符串2 ,则函数值为0;
如果字符串1 > 字符串2,则函数的值为正整数。
如果字符串1 < 字符串2,则函数的值为负整数。
大小规则
这里的大小,主要是在英文字典中字母出现的先后顺序作为依据。例如a > A
、computer > compare
,因为 comp 后面的 a > u
。
例子
1 |
|
strlen 函数
用于测量字符串的长度
一般形式
strlen (字符数组);
作用
用于测量字符数组中字符串的实际长度,不包括 \0
。
返回值
返回的是字符串的实际长度的整数。
例子
1 |
|
strupr 函数
作用是将字符串中的大写字母转换为小写字母。
一般形式
strupr(字符串);
作用
strupr 是 string uppercase 的缩写,如果给定的字符串中,含有小写字母,那么在返回值里,这些小写字母都会转换为大写字母。
返回值
返回的是转换成大写字母的字符串。
例子
1 |
|
练习
第一题
输入一个字符串,判断里面有几个单词?
思路
先把字符串获取到,放到字符数组中。遍历数组,通过空格来判断单词个数,注意最后的 num=num+1。
答案
1 |
|
第二题
使用一个二维数组,收集三个字符串,然后将二维数组内的三行内容进行比较,输出最大者。
思路
首先建立二维字符数组,然后使用 for 循环和 gets 收集三个字符串,然后通过 strcmp 和 strcpy 函数将最大者输出到中间变量中,最后输出。
答案
1 |
|
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。