C语言中的字符串+转义字符+注释

文章详细介绍了C语言中字符串的概念,强调了字符串以作为结束标志,并通过示例展示了缺少该结束符导致的问题。同时,文章讲解了转义字符的使用,特别是在打印特殊字符如目录路径时的作用。最后,提到了注释在代码中的重要性以及C语言和C++两种注释风格的差异。
摘要由CSDN通过智能技术生成

目录

1 字符串

2. 转义字符

3. 注释


1 字符串

"比特就业课学习笔记"

"abcdef"

"hello bit"

"hello bit.\n"

 这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。

注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。
#include<stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
   char arr1[] = "bit";
   char arr2[] = {'b', 'i', 't'};
   char arr3[] = {'b', 'i', 't', '\0'};
   printf("%s\n", arr1);
   printf("%s\n", arr2);
   printf("%s\n", arr3);
   return 0;
}
//缺少\0字符串结束标志所以结果乱码,停不下来字符串一直往后走

运行结果:

  

求一下字符串长度 strlen(有几个字符结果为几,汉字占用2个字符), 需要引用头文件#include<string.h>
//求一下字符串长度
	int len = strlen("abcd");//string length
	printf("%d\n", len);
	printf("%d\n", strlen(arr1));
	//printf("%d\n", strlen(arr2));
	printf("%d\n", strlen(arr3));

 运行结果:

在计算字符串长度的时候 \0 是结束标志,不算作字符串内容,不记入计算。

2. 转义字符

假如我们要在屏幕上打印一个目录: c:\code\test.c
我们该如何写代码?
#include <stdio.h>
int main()
{
printf("c:\code\test.c\n");
   return 0;
}
实际上程序运行的结果是这样的:
这里不得不提一下转义字符了。转义字符顾名思义就是转变原来的意思。
下面看一些转义字符。
转义字符释义
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\'用于表示字符常量 ' 
\"用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符,表示换页,将当前位置移到下页开头
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1-3个八进制的数字,如:\130X
\xddddd表示2个十六进制数。如:\x30 0
#include<stdio.h>
int main()
{

//问题1:在屏幕上打印一个单引号',怎么做?
//问题2:在屏幕上打印一个字符串,字符串的内容是一个双引号",怎么做?    
    printf("%c\n", '\'');
    printf("%s\n", "\"");
    return 0;
}

int main() 
{
    printf("(are you ok??)");//??) -- ] - 三字母词 加个\转义 \? 输出?
    printf("%s\n", "abc"); // 'a'单引号内为字符  "a"双引号内为字符串
    printf("%s\n", "a");
    printf("%s\n", "\"");
    printf("%s\n", "'");
    printf("%s\n", "\'");
    printf("%s\n","c:\\test\\628\\test.c");
    printf("%s\n", "\a");//触发电脑警告声,写几个警告几声
    //printf在打印数据的时候,可以指定打印格式 %c 打印字符  %s  打印字符串  %d  打印整型数
    printf("%c\n", '\130');//斜杠后面跟着3个数字 为八进制数字 8进制130转换为10进制为 1*8^2+3*8^1+0*8^0=88
                           //X  -- ASCII码值是88 - %c 字符
    printf("%c\n", '\101');//A  -- ASCII码值是65 - 8进制是:101  - %c 字符  8进制130转换为10进制为 1*8^2+0*8^1+1*8^0=65
    printf("%d\n", '\101');//65 - %d - 65
}

int main() 
{
	printf("(are you ok??)");//??) -- ] - 三字母词 加个\转义 \? 输出?
	printf("%s\n", "abc"); // 'a'单引号内为字符  "a"双引号内为字符串
	printf("%s\n", "a");
	printf("%s\n", "\"");
	printf("%s\n", "'");//
	printf("%s\n", "\'");//
	printf("%s\n","c:\\test\\628\\test.c");
	printf("%s\n", "\a");//触发电脑警告声,写几个警告几声
	//printf在打印数据的时候,可以指定打印格式 %c 打印字符  %s  打印字符串  %d  打印整型数
	printf("%c\n", '\130');//斜杠后面跟着3个数字 为八进制数字 8进制130转换为10进制为 1*8^2+3*8^1+0*8^0=88
	                       //X  -- ASCII码值是88 - %c 字符
	printf("%c\n", '\101');//A  -- ASCII码值是65 - 8进制是:101  - %c 字符  8进制130转换为10进制为 1*8^2+0*8^1+1*8^0=65
	printf("%d\n", '\101');//%d - 65
}

 运行结果:

扩展

键盘上可以敲出任何字符:

@!ER1.....

ASCII码表:

每一个字符都有一个值:ASCII码值

A - 65

B - 66

a - 97

b - 98

 扩展题:

//程序输出什么?
#include <stdio.h>
int main()
{
    printf("%d\n", strlen("abcdef"));
    // \62被解析成一个转义字符
    printf("%d\n", strlen("c:\test\628\test.c"));    
    return 0;
}

\t是一个字符, \62是一个字符 ,\后面三个数字为8进制,但是8进制中没有8,所以\62为八进制字符,8为10进制字符

运行结果:

int main()
{
    printf("%c\n", '\628');
	printf("%d\n", '\628');
	printf("%d\n", strlen("\628"));//结果2, \62 8进制一个字符,8十进制一个字符 8进制0-7
	printf("%d\n", '\108');
	printf("%d\n", '\x28');//结果为40  16进制 28 对应10进制 40
	printf("%c\n", '\x28');//结果( -- ASCII码值是40 对应字符(
}
    

 运行结果:

汉字与普通汉字标点符号占用2个字符 

int main() {
	printf("%d\n", strlen("C语言"));//5 - 汉字与普通汉字标点符号占用2个字符
	printf("%d\n", strlen("我爱中国,我的祖国"));//18
	printf("%d\n", strlen("我爱中国,我的祖国"));//17
	printf("%d\n", strlen("我爱中国——我的祖国"));//20
	printf("%d\n", strlen("我爱中国...我的祖国"));//19
}

 运行结果:

3. 注释

注释是用来解释复杂代码的

1. 代码中有不需要的代码可以直接删除,也可以注释掉
2. 代码中有些代码比较难懂,可以加一下注释文字
比如:
int Add(intx, inty)
{
    return x+y;
}
/*C语言风格注释
int Sub(int x, int y)
{
    return x-y;
}
*/
int main()
{
    //C++注释风格
    //int a = 10;
    //调用Add函数,完成加法
    printf("%d\n", Add(1, 2));   
    return 0;
}
注释有两种风格:
C 语言风格的注释 /*xxxxxx*/
缺陷:不能嵌套注释 (不支持注释里面有注释)

 C++风格的注释 //xxxxxxxx

可以注释一行也可以注释多行
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小凡同学zero

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值