C语言 字符串相关的简单知识

什么是字符串

由于字符组成的串型数据结构,以'\0'作为结束标志。

字符串为什么重要:

	我们看到的都是字符型数据,而计算机只能针对数值型数据进行运算,因此我们需要非常频繁的把数据转换成字符串,字符串转换成数据。

字符串存在的形式:

1.字符数组:
	char arr[5] = {'h','e','l','l','o'}; // error
	char arr[6] = {'h','e','l','l','o'};
	一般存储在栈,也可以存储在堆。
	注意:为'\0'预留位置!!!
	
2.字符串字面值:"由双绰号包括的若干个字符"  	char* str1 ="hehe";	printf("%s\n",str1); 
	1、以地址存在,const char* str。必须使用指针指向
	2、它存储在只读段|代码段,不能修改,否则会产生段错误。
	3、自带'\0';
一般情况都使用字符串字面值来初始化字符数组,编译器会把只读段中的字符串拷贝一份到栈,并且包括'\0'。
char str[]="hehe";

字符串的输出:

printf 	%s 	字符串首地址
puts 		字符串首地址,不需要占位符,自动换行。
putchar 	显示一个字符
fprintf(stdout,"%s","hehe");

字符串的输入:

scanf %s 	不能输入带空格的字符串
gets 		不检查字符串的长度,可能会造成段错误
fgets 		可以指定接收的字符串长度,实际只能接收size-1 字符,它会为'\0'预留一个位置,
			当输入的字符数不足size-1 时会边回车符一起接收。可能输入缓冲区会残留数据。

字符串的操作:

C语言中没有处理字符串的语句,只能使用标准库中所提供的函数进行操作。
string.h

strlen 计算字符串的长度,不包括'\0'
strcpy 字符串拷贝,使用字符串字面值给字符数组赋值只能在定义时使用,之后的赋值必须使用strcpy函数。
strcat 在str1后追加str2,连接
strcmp 按照字典序比较两个字符串,
	str1 > str2 结果为1
	str1 < str2 结果为-1
	str1 = str2 结果为0
atoi/atol/atoll 字符串转换为整数
strstr 返回str2在str1中首次出现的位置,如果返回空表示不存在。

memset/memcpy(内存拷贝)/strchr
sprintf/sscanf(用于拼接/解析字符串)
上一篇:LVM


下一篇:2019.7.16刷题统计