字符串及其操作

在内存中,字符串由字符数组组成,并且在字符后添加'\0'字符作为结束标志

char c = "a";

char str[] = "Hello World";

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

输出字符串只需要指定一个指针,c语言会默认从这个指针位置开始输出对应的字符,知道遇到'\0'字符为止。

转义字符

\a 响铃(BEL)
\b 退格(BS),将当前位置移到前一列
\f 换页(FF),将当前位置移到下页开头
\n 换行(LF),将当前位置移到本行开头
\r 回车(CR),将当前位置移到本行开头
\t 水平制表(HT),跳到下一个TAB位置
\v 垂直制表(VT)
\\ 表示反斜杠本身(\)
\' 表示单引号(')
\" 表示双引号(")
\? 表示问号(?)
\0 表示空字符串(NULL)
\ddd 1到3为八进制数所代表的任意字符
\xhh 1到2为十六进制所代表的任意字符

格式化

printf 函数

#include <stdio.h>
...
int printf ( const char * format, ... );

参数解析

1、format参数

是一个格式化字符串,由格式化占位符和普通字符组成。

格式化占位符(以%开头)用于指明输出的参数值如何格式化。

格式化占位符的语法如下:

%[flags][width][.precision][length]specifier

例如:

%-11.9f

每一个格式化占位符均以%开始,以转换字符结束

specifier(转换字符,必选)

转换字符 参数类型;转换结果
c char;字符
d int;有符号十进制整数
i 同上
e double;以指数形式输出单、双精度浮点数(小写 e)
E 同上(大写 E)
f double;以小数形式输出单、双精度浮点数
g double;以 %f 或 %e 中较短的输出宽度输出单、双精度浮点数(指数显示小写 e)
G 同上(指数显示大写 E)
o unsigned int;无符号八进制(无前导 0)
s char *;字符串
u int;无符号十进制
x unsigned int;无符号十六进制(无前导 0x)
X 同上(无前导 0X)
p void *;指针值
n int *;存放已写字符的个数
% 不进行参数转换;% 自身

注:如果 % 后边的字符不是转换字符,则其行为没有定义。

flag(标志,可选)的内容即含义如下:

标志 含义
- 指定被转换的参数在其字段内左对齐(默认是右对齐)
+ 指定在输出的数前面加上正负号
空格 如果第一个字符不是正负号,则在其前面加上一个空格
0 对于数值转换,当输出长度小于字段宽度时,添加前导 0 进行填充
# 指定另一种输出形式: 1. 如果转换字符为 o,则第一个数字为 0 2. 如果转换字符为 x 或 X,则指定在输出的非 0 值前加 0x 或 0X 3. 对于转换字符为 e、E、f、g 或 G 的情况,指定输出总是包含一个小数点。另外,对于转换字符为 g 或 G,还指定输出值尾部无意义的 0 将被保留

注:flags 可同时出现多个,且无顺序要求。

width(宽度,可选)是一个数值,用于指定最小字段的宽度

转换后的参数输出宽度至少要达到这个数值,如果参数的字符数少于该数值,则在参数左边(如果flag设置为-,要求左对齐的话则在右边)填充一些字符。填充字符通常为空格,但是如果flags设置为0,则填充字数为数字0.

.precision(.精度,可选),通过点号(.)分割字段的宽度和精度

  • 对于字符串,它指定打印的字符的最大个数。
  • 对于整数,它指定打印的数字位数(必要时可以添加填充位0以达到宽度要求)
  • 对于转换字符为e、E、f,它指定打印的小数点后的数字位数
  • 对于转换字符为g、G,它指定打印的有效数字位数

length(长度修饰符,可选)的值可以是h、hh、l、ll、L

  • hh 表示将相应的参数按 signed char 或 unsigned char 类型输出
  • h 表示将相应的参数按 short 或 unsigned short 类型输出
  • l 表示将相应的参数按 long 或 unsigned long 类型输出
  • ll 表示将相应的参数按 long long 或 unsigned long long 类型输出
  • L 表示将相应的参数按 long double 类型输出

2、... 附加参数

该参数的个数由格式化字符串决定。

每个参数的值应当与前面格式化字符串中的占位符类型和位置一一对应。

返回值:

如果函数调用成功,返回值是实际打印的字符数(不包含表示字符串结束的 '\0');

如果函数调用失败,返回值是一个负数。

字符和字符串

char a = "a";
char b[] = "abcde";
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,185评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,652评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,524评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,339评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,387评论 6 391
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,287评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,130评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,985评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,420评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,617评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,779评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,477评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,088评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,716评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,857评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,876评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,700评论 2 354

推荐阅读更多精彩内容