【C语言程序设计笔记】

C语言初识字符串/转义字符/%*的作用/%#的作用/注释的概念

/知识点汇总/

1、初识字符串

字符串就是双引号引起来的一串字符
如:“abcdefg” “好好学习,天天向上” 由双引号引起来的字符为字符串
注意:字符串的结束标志是\0的转义字符,在计算字符串长度时,不计入计算。而字节大小需计入计算。
代码1.1、字符串数组的输出
//字符数组—数组内放相同类型的元素
//基于vs2013编译器,F10调试程序查看进程,得到“hello”的字符串所占用大小以及结束标志位。

/*例程1.1*/
#include <stdio.h>
int main()
{
	char arr[] = "hello";
	//%s字符串格式符
	//打印字符串
	printf("%s\n", arr);
}

调试观察字符结束标志位‘\0’:

请添加图片描述

代码1.2、强调字符串’\0’结束标志位

/*例程1.2*/
#include <stdio.h>
int main()
{
	char arr1[] = "abc";//定义一个双引号的字符串的数组
	char arr2[] = { 'a', 'b', 'c', '\0' };//('\0'结束标志位)定义一个单引号的字符集的数组
	//打印字符串
	printf("%s\n", arr1);
	printf("%s\n", arr2);
}

(1)调试观察字符结束标志位‘\0’:
在这里插入图片描述
如图输出结果所示,此时会出现乱码
在这里插入图片描述
(2)调试观察字符结束标志位‘\0’:
在这里插入图片描述
如图输出结果所示,此时得到想要的结果
在这里插入图片描述

代码1.3、求字符串的长度
//应用strlen()函数,且需要引用头文件<string.h>
//求长度时,字符串的结束标志’\0’,不计入长度

/*例程1.3*/
#include <stdio.h>
#include <string.h> //声明头文件

int main()
{
	int length = strlen("abc");
	//打印字符串长度
	printf("%d\n", length);
}

代码1.4、求数组字符串的长度,应用strlen()与’\0’结束标志位
//应用strlen()函数,且需要引用头文件<string.h>
//求长度时,字符串的结束标志’\0’,不计入长度

/*例程1.4*/
#include <stdio.h>
#include <string.h> //声明头文件

int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a', 'b', 'c', '\0' };//('\0'结束标志位的重要性)
	printf("%d\n", strlen(arr1));
	printf("%d\n", strlen(arr2));
	return 0;
}

(1)输出观察字符串长度(不满足):
在这里插入图片描述
(2)输出观察字符串长度(满足):

在这里插入图片描述

2、转义字符

转义字符是C语言中表示字符的一种特殊形式。转义字符以反斜杠’'开头,后面跟一个字符或一个八进制或十六进制数表示。
转义字符具有特定的含义,不同于字符原有的意义,故称转义字符。
说明:(1)转义字符常以\或者\x开头,以\开头表示8进制形式的编码值,以\x开头表示16进制形式的编码值。对于转义字符数值来说,转义字符的初衷是用于 ASCII 编码,所以它的取值范围有限:只能使用八进制或者十六进制。
a、八进制形式的转义字符最多后跟三个数字,也即\ddd,最大取值是\177;(范围:0~7)
b、十六进制形式的转义字符最多后跟两个数字,也即\xdd,最大取值是\x7f。(x小写,范围:0~9,A–F)
如:\175 正确 \187 错误 8进制0~7
如:\xff 正确 \x2k 错误 16进制0~9,A–F

常见转义字符表

转义字符意义ASCII码值(十进制)
\a蜂鸣(BEL)007
\b退格(BS),将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头007
\t水平制表(HT)009
\v垂直制表(VT)011
单引号039
"双引号034
//注意:反斜杠092
\?问号039

其中:\n和\t是最常用的两个转义字符:
\n用来换行,让文本从下一行的开头输出,前面的章节中已经多次使用;
\t用来占位,一般相当于四个空格,或者 tab 键的功能。
注意:‘ ??) ’—三字母词—输出转化后为‘ ] ’,所以使用 ? 转义防止出现多个’ ? ‘号时,被转化为三字母词’ ] ’

ASCII 码表

在这里插入图片描述

代码2.1、转义三字母词的介绍:

/*例程2.1*/
#include <stdio.h>
int main()
{
	printf("(Are you ok??)");//??)---三字母词---输出转化后为]
	//输出:(Are you ok]
	printf("(Are you ok\?\?)");//使用\?转义防止出现多个'?'号时,被转化为三字母词']'
	//输出:(Are you ok??)
}

代码2.2、转义特殊的字符的说明:

注意:单引号、双引号、反斜杠等是特殊的字符,不能直接表示:
(1)单引号是字符类型的开头和结尾,要使用’表示,也即’‘’;
(2)双引号是字符串的开头和结尾,要使用"表示,也即"abc"123";
(3)反斜杠是转义字符的开头,要使用\表示,也即’\',或者"abc\123"。

/*例程2.2*/
#include <stdio.h>
int main()
{
	printf("%c\n",'a');//打印一个字符
	printf("%c\n", ''');//打印一个单引号字符,此时出错,C语言语法冲突,需要\进行转义
	printf("%c\n", '\'');//‘
	//同理:双引号
	printf("%c\n", '\"');//”
	//同理:反斜杠
	printf("%c\n", '\\');//\
}

代码2.3、八进制的转义字符:

八进制形式的转义字符最多后跟三个数字,也即\ddd,最大取值是\177;(范围:0~7)

/*例程2.3*/
#include <stdio.h>
int main()
{
	printf("%c\n", '\130');//%c单个字符一定记得加单引号'',表示8进制的130,输出为10进制的多少?
	//因为%c所以结果为:X  //X--ASCII码的值为10进制的88
	//同理:A--65--8进制的101
	printf("%c\n", '\101');//A
	printf("%d\n", '\101');//65
}

代码2.4、十六进制的转义字符:

十六进制形式的转义字符最多后跟两个数字,也即\xdd,最大取值是\x7f。(x小写,范围:0~9,A–F)

/*例程2.4*/
#include <stdio.h>
int main()
{
	printf("%c\n",'\x30');//\x30---'0'---48
	printf("%d\n", '\x30');
}

代码2.5、包含转义字符的字符串求长度:

//数长度时注意:\t算一个 \328 不可以算一个,因为8进制0~7—‘\32’和8分开计数

/*例程2.5*/
#include <stdio.h>
int main()
{
	printf("c:\\test\\328\\test.c\n");//正确输出'\',以表达路经
	printf("%d\n",strlen("c:\test\328\test.c"));//答案:14 
}

代码2.6、跳过对应的输入:

//%d%*d%d----%*的作用:跳过对应的输入

/*例程2.6*/
#include <stdio.h>
int main()
{
	int a, b, c, d;
	printf("请输入4个整数:\n");
	scanf("%d%d%*d%d", &a, &b, &c, &d);//跳过了对应的第三个输入30
	//输入a=10且存储在&a,输入b=20且存储在&b,输入c=30(跳过),输入d=10且存储在&c,最后使得&d无效理解为Null
	printf("输出的结果为:%d%d%d\n", a, b, c);
}

代码2.7、使输出保留进制的前缀符号:

//%d%#d----%#的作用:使输出保留进制的前缀符号
//以8进制为例

/*例程2.7*/
#include <stdio.h>
int main()
{
	int x = 017;
	int y = 017;
	printf("x=%o\ny=%#o\n", x,y);//x = 17 y = 017
}

3、注释的作用

注释就是在代码中起补充说明的作用
注意:(1)注释不支持嵌套,不被执行,可在任意合理位置
(2)通常以‘//’表单行注释,‘/**/’表多行注释
(3)使代码风格更规范也便于理解和阅读

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值