黑马程序员技术交流社区
标题:
C语言中字符串处理函数总结
[打印本页]
作者:
于鸿鹏
时间:
2015-11-3 08:13
标题:
C语言中字符串处理函数总结
本帖最后由 于鸿鹏 于 2015-11-3 15:19 编辑
一、puts函数作用:输出字符串的函数,将一个字符串(以’\0‘结束的字符序列)输出
一般形式:puts(字符数组的地址)
特点:1、用puts函数输出的字符串中可以包含转义字符, 2、在输出时将结束标志符'\0'转换成了'\n',即输出完之后直接换行3、可以是字符数组的首地址,也可以是字符数组元素的地址4、必须是字符数组5、不可以格式化输出
二、gets函数作用:从键盘上接收一个字符串的函数,将一个字符串输入到字符数组中,并得到一个函数值,该函数值就是字符数组的首地址
一般形式:getts(字符数组的地址)
特点:1、xcode下使用gets时会给出一个警告 2、不安全:当指定的数组长度小于输入的字符时不会提示,会存在越界问题 3、使用gets可以接收空格
三、puts函数、gets函数和putchar函数、getchar函数的区别;1、puts函数和gets函数用于字符串,二putchar 函数和getchar函数用于单个字符,
2、他们都可以输出转义字符,
3、putchar、getchar函数后面可以是字符常量、整型常量、字符变量或者整型变量,只要是值在字符的ASCII的范围之内就可以
4、getchar函数的返回值就是输入的字符,而gets函数返回值是字符串的地址
四、strcat函数—字符串连接函数一般形式:strcat(字符数组1,字符数组2)
作用:将字符串2连接到字符串1的后面,结果存放到字符串1当中,函数调用完后得到的是字符数组1的首地址
注意:字符数组1的长度要足够长,否则会出现溢出
五、strcpy和strncpy函数—字符串复制函数
一般形式:strcpy(字符数组1,字符数组2)
作用:将字符数组2复制到字符数组1中去
注意:1、字符数组1必须足够大,能够容纳被复制的字符数组2; 2、字符数组1必须写成数组名形式(如str),字符数组2 可以是字符数组名,也可以是一个字符串常量,例如 strcpy(str,”heima“); 3、复制时是将字符数组2中的字符串和最后的\0一起复制到字符数组的1中,从字符数组1的第一个元素开始覆盖,字符数组1被覆盖完后\0之后的元素是字符数组1中原有的字符
4、不能将一个字符串常量或者字符数组直接给一个字符数组 如:str = ”HeiMa“; str = str1; 这样的赋值是不合法的错误的
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
//定义字符数组
char s1[] = "Hei Ma";
char s2[] = "Xun Lian Ying";
//复制字符串
strcpy (s1,s2);
//输出字符串
printf("复制之后为");
//输出字符数组1
puts(s1);
//输出字符数组2
puts(s2);
system("pause");
return 0;
}
复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{ //定义字符数组
char s1[] = "Hei Ma";
//char s2[] = "Xun Lian Ying";
//复制字符串
strcpy (s1,"Hei Ma Xun Lian Ying");
//输出字符串
printf("复制之后为");
//输出字符数组1
puts(s1);
//输出字符数组2
//puts(s2);
system("pause");
return 0;}
strncpy函数:作用是将字符数组2中的前面n个字符复制到字符数组1中去,复制的字符个数n不应该大于字符数组1中原有的字符个数(不包括\0)
一般形式:strncpy(字符数组1,字符数组2,n);
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
//定义字符数组
char s1[] = "Hei Ma";
char s2[] = "Xun Lian Ying";
//复制字符串
strncpy (s1,s2,2);
//输出字符串
printf("复制之后为");
//输出字符数组1
puts(s1);
//输出字符数组2
puts(s2);
system("pause");
return 0;
}
复制代码
六、strcmp函数—字符串比较函数
作用:将字符串1和字符串2的自左向右逐个字符按ASCII码值得大小相比较,直到出现不同的字符或遇到'\0'位止
特点:1、如全部字符相同,则认为两个字符串相等
2、若出现不相同的字符,则以第1对不同的字符的比较结果为准
如果字符串1 = 字符串2,则函数值为0
如果字符串1 > 字符串2,则函数值为一个正整数
如果字符串1 < 字符串2,则函数值为一个负整数
3、如果参加比较的两个字符串都由英文字母组成,则在英文字典中位置在后面的为大
七、strlwr函数—转换为小写的函数
八、strupr函数—转换为大写的函数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
//定义字符数组
char s1[] = "HEI MA";
char s2[] = "hei ma ";
//复制字符串
strlwr (s1);
strupr(s2);
//输出字符串
//printf(" 比较结果为:%d\n",s1);
//输出字符数组1
puts(s1);
//输出字符数组2
puts(s2);
system("pause");
return 0;
}
复制代码
作者:
于鸿鹏
时间:
2015-11-3 08:15
代码怎么回变成 这样?
作者:
王永贺
时间:
2015-11-3 08:51
这个原因是代码是直接复制是上去的 ,总结的还好
作者:
于鸿鹏
时间:
2015-11-3 08:55
恩 学习了以后就不会出现这种情况 了
作者:
gabriel2016
时间:
2015-11-3 12:14
支持一下啊!
作者:
于鸿鹏
时间:
2015-11-3 13:59
gabriel2016 发表于 2015-11-3 12:14
支持一下啊!
谢谢 感谢支持
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2