#include<stdio.h>
int main()
{
printf("C:\text\text.c");
return 0;
}
有些新手没有学过转义字符看到可能会觉得会输出结果会是
实际上,这跟结果差别很大。
这段代码的输出结果是下面这样的。
为什么会这样呢?
其实问题出在 \ 里。在C语言中,反斜杠 \ 是一个特殊字符,是用于表示转义字符。它可以让编译器将某些特殊字符或不可打印字符转化位可表示的形式。在这里 \t 被编译器认为是转义序列,表示水平制表符。
以下是常见的转义序列:
\n :换行符
\t :水平制表符 光标移到下一个水平制表位,通常是下一个4/8的倍数。
\r :回车符 光标移到同一行的开头。
\b :退格符 光标回退一个字符,但不删除字符。
\f :换页符 光标移到下一页。在现代系统上,这已经反映不出来了,行为改成类似于\v 。
\v :垂直制表符 光标移到下一个水平制表位,通常是下一行的同一列
\\ :反斜杠本身 用于表示一个反斜杠,防止它被解释为一个转义序列符
\' :单引号 用于表示字符常量'
\" :双引号 用于表示一个字符串内部的双引号
\? :问号 在书写连续多个问号是使用,防止他们被解析成三字母词,但在新的编译器里没有办法验证了
\a :响铃 这会使得终端发出警报声或出现闪烁,或者两者同时发生。
\ddd :d d d表示1~3个八进制的数字。 如: \130 表示字符X
\xdd :d d表示2个十六进制数字。 如: \x30 表示字符0
\0 :空字符 :null 字符,代表没有内容, \0 就是\ddd 这类转义字符的一种,用于字符串的结束标志,其ASCII码值是0
根据上面的知识我们很容易可以知道如何打印出
下面是代码
#include<stdio.h>
int main()
{
printf("C:\text\text.c");
return 0;
}
我们再看看下面的代码和输出结果,我们可以看到第6行代码没有输出 % 。这是为什么呢?
这是因为 % 是一个特殊字符,如果直接在格式字符串中写 % ,编译器会将其视为格式控制符的引导字符。所以这才导致在格式字符串里单独输出 % 而无法输出 % 。因此,为了输出一个普通的 % ,需要使用 %% 。
我们来认识一些控制字符吧
1.整数型
%d
%md 输出m位,不足补空格,大于m位时按实际长度输出
%0md 输出m位,不足补0,大于m位时按实际长度输出
%o 按八进制格式输出
%x 按十六进制输出
%u 用于输出unsigned类型输出。
2.浮点型
%f 按float类型输出 %lf 按double类型输出
%.nf 保留n位小数
其余与%md同理
%e 以科学计数法的形式输出浮点数。
%g 会自动数值大小选择%f或%e
如果数值的绝对值大于等于1e-4且小于1e6,则以 %f 格式输出。
如果数值的绝对值小于1e-4且大于等于1e6,则以 %f 格式输出。
默认情况下,小数点后保留6位数字。
3.字符和字符串型
%c 以字符形式输出
%s 以字符串形式输出,注意遇到'\0'才结束
%ms m为指定长度,向右对齐,不足时向左补空格,大于m位时按实际长度输出
%-ms 向左对齐,不足时向右补空格,大于m位时按实际长度输出
%m.ns 输出占m个字符位置,其中字符最多n个,左补空格
%-m.ns 同上右补齐空格
%。ns 输出前n个字符
4.指针和其他特殊格式控制符
%p输出指针
%a 输出小写的十六进制数字。
%A 输出小写的十六进制数字。
%n用于获取到目前为止已输出的字符数
%j 用于输出intmax_t或intmax_t类型的整数
%z用于输出size_t类型的无符号整数
//本蒟蒻今天给大家带来了关于C语言中关于( \ 和 % )的小小分享。虽然我也是刚刚入门,但在探索过程中收获了不少,希望这些内容对你们有帮助。
本蒟蒻是第一次写这样的技术性博客,多有不足请多多包涵,并指出。
但我会继续努力,争取带来更多有趣且有用的内容。
感谢你抽出时间来阅读本蒟蒻的这篇小文章!如果你觉得有点帮助,或者至少没让你觉得浪费时间,那就太好了!如果你喜欢这篇文章,不妨点个赞,让我知道你来过。你的支持就是我继续努力的动力!