C语言的字符串常用函数(18种)

题目

1.gets()

2. fgets()

3. puts()

4. fputs()

5. sprintf()

6. fprintf()

7. sscanf()

8. atoi(), atol(),atof()

9. strstr

10,strcpy(str1,str2)

11,strncpy(str1,str2,size_t)

12,memset(str,0,5)

13,strcmp(str1,str2)

14,strncmp(str1,str2,size_t)

15,strcat(str,"his is a string")

16,strncat(str,"Bye Bye.", 5);

17,strlwr(字符串)

18,strupr(字符串)


   1.gets()

	(1) 头文件
	
		#include 
		
	(2) 函数原型
	
		char *gets(char *s);
		
	(3) 功能
	
		从标准输入设备读入字符,并保存到指定的内存空间, 直到出现换行符或读到文件结尾为止
		
	(4) 参数
	
		s: 字符串首地址
		
	(5) 返回值
	
		成功: 返回读入的字符串
		失败: NULL
	
	(6) 和scanf("%s",s);区别 

	scanf(); 遇到空格,读取结束 (默认以空格分开) ,并且不会做越界检查------这也是, 编译器建议不用scanf的原因 ***
	gets(); 允许有空格, 但是也不做越界检查 ***
	
	

2. fgets()

	(1) 头文件
	
		#include 
	
	(2) 函数原型
	
		char *fgets( char          *str, int count, FILE          *stream );
		char *fgets( char *restrict str, int count, FILE *restrict stream );
	
	(3) 功能
	
		从给定文件流读取最多 count - 1 个字符并将它们存储于 str 所指向的字符数组。若文件尾出现或发现换行符则终止分析,后一情况下 str 将包含一个换行符。若读入字节且无错误发生,则紧随写入到 str 的最后一个字符后写入空字符。
		若 count 小于 1 则行为未定义。亦不指定是否写入空字符,若 count==1 。
	
	(4) 参数
	
		str: char 数组元素的指针
		count: 的最大字符数(典型的为 str 的长度)
		stream: 取数据来源的文件流
		
	(5) 返回值
	
		成功: 返回字符
		失败或到文件结尾: NULL
	
	(6) 实例
	
		char buf[100];
		// 从stdin (代表标准输入,键盘),读取数据
		//注意也会把换行符读进去
		fgets( buf,sizeof(buf),stdin);

3. puts()


(1) 头文件

#include 

(2) 函数原型

int puts(const char *s);

(3) 功能

标准设备输出s字符串,完成后自动在屏幕输出一个'\n'

(4) 参数

s: 字符串首地址

(5) 返回值

成功 : 非负数
失败 : -1

4. fputs()

	(1) 头文件
	
		#include 
	
	(2) 函数原型
	
		int fputs(const char *str,FILE *stream);
	
	(3) 功能
	
		将str所指定的字符串写入到stream所指定的文件中,字符串'\0'不写入文件中
	
	(4) 参数
	
		str : 字符串
		stream : 文件指针, 如果把字符串输出到屏幕上写为stdout
	
	(5) 返回值
	
		成功 0
		失败 -1
	
	(6) 注意
	
		fputs 是puts的文件版本,但是前者不会自动输出'\n'

用 puts gets 函数只能输出或者输入一个字符串,不能写成

C语言的字符串常用函数(18种)_第1张图片

 

5. sprintf()


	(1) 头文件
	
	#include 
	
	(2) 函数原型
	
	int sprintf( char *buffer, const char *format, ... );
	例 ,sprintf(buf,"  " ,a);
	
	(3) 功能
	
	格式化一个字符串,并把字符串输入到指定数组
	

格式化字符串, 并把内容输入到指定文件

7. sscanf()


	从数组中按照指定格式提取内容
	例: 
	//提取整型
	char buf[] = "a = 1, b = 2, c = 3";
	int a,b,c;
	sscanf(buf,"a = %d, b = %d, c = %d",&a,&b,&c);
	//提取字符串,默认以空格为分隔 (其他的不可以)
	
	

8. atoi(), atol(),atof()

	(1) 头文件
	
		#include 
		
	(2) 函数声明
	
		int       atoi( const char *str );
		
	(3) 功能
	
		扫描str ,跳过前面的空格字符, 知道数字或正负号才开始转换, 直到'\0'才结束转换
		
	(4) 参数
	
		str :需要转换的字符串指针
		
	(5) 返回值
	
		成功转换后的整数

9. strstr

1,定义和用法
   strchr()函数搜索在字符串中的第一次出现
   该函数时strstr()函数的别名
2,注释
   该函数时二进制安全的
    该函数是区分大小写的,如需进行不区分大小写的搜索,请使用stristr()函数
3,语法
   strchr(string,search,before_search);
[string]
   {
      必需
      规定被搜索的字符串
    }


 [search]
   {
      必需
      规定所搜索的字符串
      如果该参数是数字,则搜索匹配该数字对应的ASCII值的字符
    }
   

10,strcpy(str1,str2)

1,将字符str2复制到str1中,这个库函数不会检查str1的容量是否足够长度,因此字符串1的长度必须足够大。

2,字符串1必须写成数组形式,字符串2可以是数组名,也可以是一个字符串常量

3,赋值前对字符串1要初始化

4,不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。字符数组名是一个地址常量,他不能改变值,正如数值型数组名不能被赋值一样。如下面两行都是不合法的:

str1="china";        //企图用赋值语句将一个字符串常量直接赋值给一个字符数组。

str1=str2;             //企图用赋值语句将一个字符数组直接赋值给另一个字符数组。

只能用strcpy函数将一个字符串复制到另一个字符数组中去。用赋值语句只能将一个字符赋给一个字符型变量或字符数组元素。如下面语句就是合法的:

char a[5],c1,c2;

c1='A';c2='B';

 a[0]='C';a[1]='h';a[2]='i';a[3]='n';a[4]='a';

11,strncpy(str1,str2,size_t)

将字符串str2从头开始复制size_t个字符到str1中,这个库函数会检查str1的容量是否足够长

12,memset(str,0,5)

将str中的5个字符清空替换成0

13,strcmp(str1,str2)

比较str1和str2字符串的ASCII码的大小,会返回>0 、0、 <0中的一种。

如果参加比较的两个字符串都由英文字母组成,则有一个简单的规律:在英文字典中位置在后面的为大。例如:computer在字典中位置在compare之后,所以”computer>"compare".但应注意小写字母比大写字母大,所以“DOG"<"cat"

14,strncmp(str1,str2,size_t)

指定str1str2中size_t个元素比较,会返回>0 、0、 <0中的一种。

15,strcat(str,"his is a string")

将字符串拼接到str的后面,不检查str数组的长度

字符数组1必须足够大,以便容纳连接后的新字符串。连接前两个字符串的后面都有\0,连接后只在新字符串最后保留\0

16,strncat(str,"Bye Bye.", 5);

将字符串中的5个长度的字符拼接到str的后面,检查str数组的长度

17,strlwr(字符串)转换为小写的函数

将字符串中大写字母换成小写字母

18,strupr(字符串)转换为大写的函数

将字符串中小写字母换成大写字母

你可能感兴趣的:(小知识,c语言)