字符串和格式化输入输出(2)

字符串

字符串是一个或多个字符的序列,比如:"zing went eht string of my heart ".双引号不是字符串的一部分,双引号只是在告知编译器括起来是字符串。

char 类型数组和null字符

  • 字符串存储在char类型的数组中。
  • 数组由连续的存储单元组成,字符串的字符被存储在相邻的存储单元中,每一个单元存一个字符
  • 数组末尾位置的字符是\0,称为空字符,用它标记字符串的结束,字符串一定以\0空字符结束,意味着数组容量必须至少比待存储的字符数多1

char类型数组声明

char name[40];

  • name后面的方括号表明这是一个数组,方括号中的40表明该数组的元素数量
  • char表名每个单元的类型

使用字符串

#include<stdio.h>
#define Praise "you are an extraordinary being."

int main()
{
   char name[40];
   
   printf("what\'s your name?");
   scanf("%s",name);
   printf("hello,%s.%s\n",name,Praise);
   return 0;
}
what's your name?Angle Plains
hello,Angle.you are an extraordinary being.
  • %s告诉printf()打印一个字符串
  • scanf()只读取了Angle Plains中的Angle,因为在遇到第一个空白(空格,制表符,换行符)时就不再读取输入
  • 一般而言,%s转换说明,scanf()只会读取字符串的一个单词,而不是一整句

字符串和字符

字符串常量"x"和字符常量’x’不同。

  • 区别之一:'x’是基本类型(char),"x"是派生类型(char 数组)
  • 区别之二:"x"实际由两个字符组成:'x’和\0

strlen()函数

sizeof运算符,他以字节为单位给出对象大小,strlen()函数给出字符串的字符长度

#include<stdio.h>
#include<string.h>
#define Praise "you are an extraordinary being."

int main()
{
   char name[40];
   
   printf("what\'s your name?");
   scanf("%s",name);
   printf("hello,%s.%s\n",name,Praise);
   printf("%u %u\n",strlen(name),sizeof name);
   printf("%u %u\n",strlen(Praise),sizeof Praise);
   
   return 0;
}
what's your name?ffdjs
hello,ffdjs.you are an extraordinary being.
5 40
31 32
  • string.h头文件包含多个与字符串相关的函数原型,包括strlen()函数
  • 一般的,c把函数相关的函数归为一类,为每类函数提供一个头文件比如,printf()函数和scanf()函数都隶属标准输入输出函数,使用头文件stdio.h
  • sizeof运算符把\0也计入在内,strlen()得出的是字符串中的字符数(包括空格和标点符号)但不计入\0.
  • c99/11标准为sizeof运算符返回类型添加%zd,%u,%lu转换说明,对于strlen()同样适用。要知道对于早期c,sizeof运算符和strlen()返回的实际类型是(unsigned或unsigned long)
  • 对于sizeof何时加圆括号,运算对象是类型时(char ,int,float 等类型),需要加圆括号。是特定量时,可加可不加。

常量和c预处理器

#include<stdio.h>
#define PI 3.14159

int main()
{
	float area,radius,circum;
	scanf("%f",&radius);
	area=PI *radius*radius;
	circum=2.0*PI*radius;
	printf("面积=%f,周长=%f\n",area,circum);
	printf("面积=%.2f,周长=%1.2f\n",area,circum);
	return 0;
 } 
1
面积=3.141590,周长=6.283180
面积=3.14,周长=6.28
  • 使用预处理器可以定义常量,只需要开头加 #define PI 3.14159。在编译程序时,PI都会都被替换成3.14159。这一过程称为编译时替换
  • 格式:首先是#define,再是符号常量名(PI),最后是符号量的值(3.14159)(值还可以是字符,字符串常量),不用添加等号
  • 建议使用大写,可以增加可读性,命名规则和变量相同。

const限定符

const关键字,用于限定一个变量为只读。
声明:

const int months=12;//months 在程序中不可更改,值为12
  • 可以使用months的值,但是不能更改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值