CPP字符串和格式化输入输出
Posted 王明扬
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPP字符串和格式化输入输出相关的知识,希望对你有一定的参考价值。
前导:数组(array),字符串转换说明符%s,定义符号常量,,strlen()获取字符串长度,。
【字符串】
没有专门的字符串类型,是吧他存储在字符型数组中,数组最后一个字符为空字符\'\\0\',c用他来标志字符串的结束,这个非打印字符不会被打印出来,但这意味着数组单元的长度必须比字符串的长度至少大一。
【使用字符串】
#include<stdio.h>
int main(void)
{
char name[40];//定义字符数组
printf("what\'s your name?\\n");
scanf("%s",name);//注意:输入字符串时没有用到&符号
printf("Hello %s !",name);
return 0;
}
注意:scanf()读取时会在遇到的第一个空格,制表符,换行符处停止。
【字符和字符串】
字符\'x\'是基本类型(char),存储为[x]
字符串"x"是派生类型(char数组),存储为[x][\\0]
【strlen()函数】
sizeof运算符,以字节为单位给出数据大小,
strlen()函数,以字符为单位给出字符串长度,
一个字符占一个字节,但这他们得出的结果并不一样。
#include<stdio.h>
#include<string.h>//提供strlen()函数的原型 ,他包含了许多与字符串相关的函数的原型
#define PRAISE "what a marvelous name!"
int main(void)
{
char name[40];
printf("what\'s your name?\\n");
scanf("%s",name);
printf("Hello %s !",name);
printf("your name of %d letters occupies %d memory cells.\\n",strlen(name),sizeof name );
printf("the phrase of praise has %d letters.\\n",strlen(PRAISE));
printf("and occupies %d memory cells.\\n",sizeof PRAISE );
return 0;
}
从这个例子可以看到,sizeof得到的是数据占用的大小,即使、申请的字符数组没有填满,也算作他的大小,自然地字符串末尾的非打印字符\'\\0\'也算作占用的大小。
而strlen()就是计算字符串的长度而已,当然也就不包括\'\\0\'。
注:size可以带()也可以不带,当需要获取某个类型大小时圆括号是必须的,但某个具体量(如6.28,"Hello")时则可有可无。
【常量和C预处理器】
#define PI 3.14159//定义一个符号常量
#define BEEP \'\\a\'
#define OOPS "now you have done it !"
#define COST 3
这是在C预处理器完成的,注意要大写常量。
const修饰符:const关键字可以吧一个变量声明转换成常量声明,使其成为只读值,
这种方式更为灵活。
const int SCORE = 89;//SCORE是一个值为89的符号常量
系统定义的常量:头文件limits.h和float.h分别提供整型和浮点型
//例如limits.h文件包含下面类似的行
#define INT_MAX +32767
#define INT_MIN -32768
【研究和利用printf()和scanf()】
仅允许非商业转载,转载请注明出处:
https://i.cnblogs.com/EditPosts.aspx?postid=7082749
以上是关于CPP字符串和格式化输入输出的主要内容,如果未能解决你的问题,请参考以下文章
(C语言)unsigned long类型变量输出时,格式转换说明符应如何定义?
java缓冲字符字节输入输出流:java.io.BufferedReaderjava.io.BufferedWriterjava.io.BufferedInputStreamjava.io.(代码片段