C/C++字符和字符串

1、字符串的定义(字符用char,字符串用string)

在计算机里,所有数据必须以数字的形式表示,字符也不例外。根据 ASCII 码表的规定,每个字符一个数字表示,而这个数字在 0-127 之间。在 C/C++里char/short/int 都可以表示整数,由于字符的数值范围较小,我们选用 char 型变量来代表字符

如:

char c = 'aa';
char c= ' 1   ';

这些都是错误的字符表示方法,应为字符对应的单引号中只能出现一个字母,并且不能是汉字,不能有多余的空格出现 

①字符的输出%c

②字符串的输出%s

char str[6] = "hello";
printf("string: %s \n", str);

③字符串的结束符

字符串的末尾必须为一个数字 0 作为结束符,它是一个字符串结束的标识。如果一串字母不以 0 结束,那它就不算是一个有效的字符串。

下面定义了一个字符数组,前 3 个字符是 b,a,d,但末尾并不是 0,那它不是一个有
效的字符串,在用 printf 输出的时候会有问题:
char buf [4] = { 'b' , 'a' , 'd' , -1 };
printf("Got: %s \n", buf);
控制台输出时,会打印出一些乱码字符

而如下的定义就是可行的,末尾为0

由于str[3] 是0,第一个输出abc 
第二个输出def
str[7]是0,所以直接结束 ,第三个输出为空

2、strlen()计算出字符串的长度

3、字符串对应的路径输出(\和"之前都必须加上转义符\)

用printf 打印输出以下文本:文件路径: "e:\cprojects\example\test.c"
printf("文件路径: \"e:\\cprojects\\example\\test.c\"");

注意,\ 和 " 均需要转义,\和"之前都必须加上转义符\

这也解释了为什么定义文件名字符串的时候会出现两个斜杠的原因:

 如下:\0的应用

4、字符串数组

char name[10] = "shaofa";

printf("%d, %d, %d \n", name[5], name[6], name[7]);
数组name,初始化为 's' 'h' 'a' 'o' 'f' 'a' 0 0 0 0
name[5] 为 'a' ,即97
name[6] 和 name[7] 为0

字符串赋值给数组,定义为char,将每个字符依次存入数组中

输出是%d,输出字符对应的ASCII码

 ①字符串数组的赋值

char name[10] = "shaofa";
name = "shaodong";

上面用法错误,数组的初试化可以直接用等号赋值,但是修改数组不能直接直接将字符串赋值给数组名,如果想修改name里的内容,可以用strcpy_s() 函数

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

int main()
{
	char name[10] = "shaofa";
	strcpy_s(name, 10, "shaodong"); // 修改数组name的内容

	getchar();
	return 0;
}

②数组长度必须大于字符串长度

char str[4] = "shao";
	printf("值为: %s \n", str);

 数组太小,数组长度至少字符串长度+1。此处,字符串 "shao" 长度为4,所以数组长度至少为5。否则,末尾为0作为结束标识,它就不是一个合格的字符串,上述打印中会有乱码。

5、字符串操作

①截取

当文件名不确定时长度只能此种方法,第二个参数对应的是截取 结束的地方

②分割

分割第一次取出192,分割第二次取出168.0.1 

③字符串拼接 

+ 号拼接字符串

 

猜你喜欢

转载自blog.csdn.net/qq_20386411/article/details/89012961