C primer plus——C进阶探幽

系列文章目录



本章学习任务

1.掌握输入/输出函数。printf()与scanf();

2.C预处理指令

3.定义、使用符号常量


一、字符串简介

字符串是一个或者多个字符的序列。

例如:“zed ding 66"。双引号不是字符串的一部分,只是表示括起来的部分是字符串。

4.1char类型和null字符

C语言没有专门的存储字符串的变量类型,字符串都被存储在char类型的字符数组中,数组由连续的存储单元组成。

请注意

C中的字符串一定以空字符(\0)结束,这意味着数组的容量必须要比需要存储字符串中的字符数多1。

例如”abc de“在内存中是这样存储的。

abcde\0

 字符串看上去比较复杂,我们必须先创建一个字符数组,然后才能将字符串中的每个字符逐个放入数组中。

示例

#include <stdio.h>
#define PRAISE "You are an extraordinary being"
int main()
{
char name[20];
printf("What 's your name?");
scanf("%s”,name);
printf("Hello ,%s. %s\n",name,PRAISE);
return 0;
}

上述程序中使用了char数组去存放name,%s告诉printf()打印一个字符串。

注意scanf()在遇到第一个空白(空格、换行符、制表符)的时候就会停止读取输入。 

上述程序中

Angela plains

>>Hello Angle. You are extraordinary being.

这是因为名字和姓氏中间有一个空格,scanf()读取姓名的时候遇到了空格然后停止了读取,所以只显示姓。

4.2   strlen()函数

sizeof()运算符以字节为单位给出对象的大小。计算所有字节,包括未使用的字节和\0字符

strlen()函数则会给出字符串中字符的长度。只计算占用字节,不计入\0字符,计入包括空格和标点符号在内的一切字符。

4.3   #define预处理指令

格式:   #define NAME value 末尾不能加分号

#define 指令可以定义字符和字符串常量。

#define BEEP '\a'

#define OOPS "Now you have done it!"

说到底#define预处理指令是告诉了编译系统,全文的NAME都将被用 value 直接隐式替代,相当于隐式执行了全文查找和替换功能。

例如:

#define TOES 20

num=i+TOES;     (与num=i+20;等价)

但是如果写成 #define TOES =20

那么会变成 num =i+=20;这样肯定是不行的。    

4.4   printf()和scanf()    

printf()函数和scanf()函数能够让用户可以与程序交流,他们是输入输出函数,或者简称为I/O函数。

4.4.1   printf()函数

printf()函数打印数据的指令要与待打印数据的类型相匹配。

 

 

 printf("%5d\n",1000);               //默认右对齐,左边补空格
printf("%-5d\n",1000);              //左对齐,右边补空格
 
printf("%+d %+d\n",1000,-1000);     //输出正负号
 
printf("% d % d\n",1000,-1000);     //正号用空格替代,负号输出
 
printf("%x %#x\n",1000,1000);       //输出0x
 
printf("%.0f %#.0f\n",1000.0,1000.0)//当小数点后不输出值时依然输出小数点
 
printf("%g %#g\n",1000.0,1000.0);   //保留小数点后后的0
 
printf("%05d\n",1000);              //前面补0

 printf("%hhd\n",'A');               //输出有符号char
printf("%hhu\n",'A'+128);           //输出无符号char
printf("%hd\n",32767);              //输出有符号短整型short int
printf("%hu\n",65535);              //输出无符号短整型unsigned short int
printf("%ld\n",0x7fffffffffffffff); //输出有符号长整型long int
printf("%lu\n",0xffffffffffffffff); //输出有符号长整型unsigned long int

 4.4.2 scanf()

scanf()把输入的字符串转换成整数、浮点数、字符或者字符串

scanf()函数使用指向变量的指针

而printf()函数使用变量、常量和表达式

以下是使用scanf()函数的两条基本规则

1.如果scanf()读取基本变量类型的值,在变量名前面加上一个&

2.如果是用scanf()读取字符串存入字符数组中,则不需要使用&

#include  <stdio.h>
int main()
{
float assets;
int age;
char pet[30];
printf("ENter your age ,assets, and favorite pet .\n");
scanf("%d %f",&age,&assets);
scanf("%s",pet);
printf("%d  $%.2f %s\n",age ,assets,pet);
return 0;
}

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值