【C语言入门】字符串与转义字符

本文详细介绍了C语言中的字符串概念,包括字符串字面值、数组表示法,以及如何使用%s和strlen函数操作。同时涵盖了转义字符的用法,如0、n、t等,并通过实例演示了转义字符在字符串格式化和文件路径表示中的应用。
摘要由CSDN通过智能技术生成

【C语言入门】字符串与转义字符

五、字符串与转义字符

1 字符串

这种由双引号引起来的一串字符称为字符串字面值(String Literal),或者称为字符串常量/字符串

"hello world.\n"

注意:在字符串的结尾隐藏了一个字符串结束标志 \0 。通过 strlen 函数求字符串长度时,该字符不算作字符串内容。

1.1 示例1

%s 的格式打印字符数组

#include<stdio.h>

int main()
{
	//字符串

	char arr1[] = "hello";//[h、e、l、l、o、\0]
	char arr2[] = { 'h', 'e', 'l', 'l', 'o' };//[h、e、l、l、o]
	char arr3[] = { 'h', 'e', 'l', 'l', 'o', '\0' };//[h、e、l、l、o、\0]

	printf("%s\n", arr1);//hello
	printf("%s\n", arr2);//hello烫烫烫烫烫蘦ello
	printf("%s\n", arr3);//hello

	return 0;
}

解释说明

1 上述三个数组都在创建时都进行了初始化。

2 %s

​   在 print 函数中,以%s格式打印输出字符串,从字符串首字符的地址开始,直到遇到字符串结束标志 \0 才停止。

​   arr2 数组中没有 \0 这一元素,当以 %s 格式打印字符串时,会越过原本数组范围继续寻找 \0 标志,直到遇到 \0 打印才停止。

3 其他说明

​   数组名表示数组首元素的地址,不能被修改(不能充当左值)。


1.2 示例2

使用 strlen 函数求字符数组(字符串)的长度

#include<stdio.h>

#include<string.h>
int main()
{
	//字符串

	char arr1[] = "hello";
	char arr2[] = { 'h', 'e', 'l', 'l', 'o' };
	char arr3[] = { 'h', 'e', 'l', 'l', 'o', '\0' };

	//strlen()函数,用来求字符串的长度
	printf("%d\n", strlen(arr1));//5
	printf("%d\n", strlen(arr2));//21(随机值)
	printf("%d\n", strlen(arr3));//5

	//测试%s遇到\0的情况
	char arr4[] = { '\0',  'h', 'e', 'l', 'l', 'o' };
	printf("%s\n", arr4);//除了\n换行,什么都不打印输出

	return 0;
}

解释说明

1 strlen()

​   是用来计算字符串长度的一个库函数,从起始地址开始向后统计字符数,直到遇到 \0 就立即停止,但不统计 \0

​   需要包含头文件 <string.h>


2 转义字符

简单地说,转义字符是难以表示或无法输入的字符

转义字符(Escape character),所有的ASCII码都可以用“\”加数字(一般是8进制数字)来表示。C语言中定义了一些字母前加 " \ " 来表示常见的那些不能显示的ASCII字符,如 \0\t , \n 等,称为转义字符

2.1 示例1

打印一个文件路径

#include<stdio.h>

int main()
{
	//打印一个文件路径

	printf("c:\code\test.c\n");  //c:code  est.c
	printf("c:\\code\\test.c\n");//c:\code\test.c

	return 0;
}

解释说明

1 第一个 printf 函数格式化字符串中的 \c\t被识别为转义字符

​   在字符串中,\ 会与后一个字符形成转义字符。

​   如果想要输出 \ ,就必须写成 \\ 的形式。


2.2 转义字符表

转义字符释义
\?表示一个问号;在书写连续多个问号时使用,防止它们被解析成三字母词 “ ??) -> ] ”
\’表示一个单引号
\"表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,会触发蜂鸣,但是不会移动屏幕光标
\b退格符
\f换页符,把屏幕光标移至下一页的开始处
\n换行符,把屏幕光标移至下一行的开始处
\r回车,把屏幕光标移动到当前行的开始处
\t水平制表符,把屏幕光标移至下一个水平制表点
\v垂直制表符,把屏幕光标移至下一个垂直 制表点
\dddddd 表示1~3个八进制数字。比如:\130 表示字符 X
\xdddd 表示2个十六进制数字。比如:\x30 表示字符 0

2.3 示例2

打印单引号、双引号

#include<stdio.h>

int main()
{
	//使用printf函数打印单引号、双引号
	printf("\'\n");
	printf("%c\n", '\'');
	printf("%s\n", "'");

	printf("\"\n");
	printf("%c\n", '"');
	printf("%s\n", "\"");

	return 0;
}

解释说明

1 printf("\'\n");printf("\"\n");

​   在格式化字符串中使用转义字符,就可以打印单引号和双引号。

2 printf("%c\n", '\'');

​   单引号作为字符打印,需要转变为转义字符。

3 printf("%s\n", "\"");

​   双引号作为字符串打印,需要转变为转义字符。


2.4 示例3

下面程序输出什么?

#include<stdio.h>

int main()
{
	//下面程序输出什么

	printf("%d\n", strlen("abcdef"));//6
	//a b c d e f

	printf("%d\n", strlen("c:\test\628\test.c"));//14
	//c : \t e s t \62 8 \t e s t . c

	return 0;
}

解释说明

1 \628 :因为八进制中没有数字8,所以 \62 是一个字符,8 是一个字符。

2 八进制 \62 转换成十进制:6*8^1 + 2*8^0 = 48 + 2 = 50 。


总结:

  本节介绍了什么是字符串和字符串结束标志 \0;最后给出了转移字符表,以及转义字符的一般用法。


感谢您的阅读!如有任何错误,欢迎您的批评指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值