C语言重拾(3)——字符串和格式化输入输出

C语言重拾(3)——字符串和格式化输入输出

4.2 字符串简介

scanf()在读取时,遇到空白(空格、制表符、换行符)就不再读取输入。

字符串常量 “x” 与字符常量 ‘x’ 不同,区别之一是 ‘x’ 是基本类型char,而 “x” 是派生类型char数组。区别之二是 “x” 实际是由两个字符组成: ‘x’‘\0’

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

#include <stdio.h>
#include <string.h>			//提供strlen()函数的原型 
#define PRAISE "u r an extraordinary being."

int main(void)
{
	char name[40];
	
	printf("what's your name?\n");
	scanf("%s",name);
	printf("Hello,%s.%s\n",name,PRAISE);
	printf("your name of %zd letters occupies %zd memory cells.\n",strlen(name),sizeof name);
	printf("the phrase of praise has %zd letters",strlen(PRAISE));
	printf("and occupies %zd memory cells.\n",sizeof PRAISE);
	
	
	return 0;
}

输入andrew,得到结果:

Hello,andrew.u r an extraordinary being.
your name of 6 letters occupies 40 memory cells.
the phrase of praise has 27 lettersand occupies 28 memory cells.

sizeof运算符报告,name数组有40个存储单元。但是只有前6个用来存储andrew,所以strlen()得到的结果是6(如果输入andrew xxx,得到的结果与andrew相同)。
name数组的第七个单元储存空字符,strlen()并未将其计入。对于PRAISE,strlen()得出的也是字符串中的字符数(但是包括空格和标点符号)。然而,sizeof给出的数更大,因为它把字符串末尾不可见的空字符也计算在内。
另外,sizeof后边是类型时,必须加括号,如sizeof(char),sizeof(int),但是特定量,括号可有可无,如sizeof name。

4.3 常量和C预处理器

#define PRAISE 预处理器也可以定义常量,一般习惯上将define后跟的符号常量大写。也有将c_或k_前缀表示常量(如,c_level)
const限定符用于限定一个变量为只读, const int MONTHS=12; //MONTHS在程序中不可更改,值为12.

4.4 printf()和scanf()

类型转换说明
printf()标记
scanf()与printf()相反,它是将输入的字符串转成整数、浮点数、字符或字符串。 printf()函数使用变量、常量、表达式,而scanf()函数使用指向变量的指针。目前还未学习指针,只需记住:
如果用scanf()读取基本变量类型的值,在变量名前加上一个&;
如果用scanf()把字符串读入字符数组中,不要使用&。

小结

这章细节比较多,但是没那么难,用到的时候注意一下就好,看得也不是很仔细,先这样啦,886

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值