C语言学习(三)(字符串和格式化输入输出)

4.1 

先看一段代码;

#include <stdio.h>
#define PRAISE "You are an extraorinary being."
int main(void)
{
	char name[40];

	printf("What's your name?");
	scanf_s("%s", name, 40);

	printf("Hello, %s. %s\n", name, PRAISE);
	getchar();
	getchar();

	return 0;

 使用%s的话scanf_s()只能够输入没有空格的字符串,若是输入含有空格的字符串则会直接退出如“张 三”;

结果为:

What's your name?张三
Hello, 张三. You are an extraorinary being.

#include <stdio.h>
#define PRAISE "You are an extraorinary being."
int main(void)
{
	char name[40];

	printf("What's your name?");
	scanf_s("%[^\n]", name, 40);

	printf("Hello, %s. %s\n", name, PRAISE);
	getchar();
	getchar();

	return 0;
}

若是要输入含有空格的字符串我们可以采用控制字符 %[^\n];例如经常需要读入一行字符串,而这串字符里面可能有空格、制表符等空白字符,如果直接用%s是不可以的,于是有些人就想到用gets(),当然这也是一种选择,但是懂C的人基本上都知道gets()是一个很危险的函数,而且很难控制,特别是与scanf()交替使用时前者的劣势更是一览无余,所以gets()一般是不推荐用的,其实用%[^\n]就可以很好的解决这个问题了,^表示"非",即读入其后面的字符就结束读入。这样想读入一行字符串直接用scanf("%[^\n]%*c",str);就可以了,
%*c的作用是读入\n,否则后面读入的将一直是\n。

 结果为

What's your name?张 三
Hello, 张 三. You are an extraorinary being.

4.2.1

sizeof()和strlen()都包含在头文件string.h中。

sizeof():以字节为单位给出对象的大小。(包括空字符)

strlen():给出字符串中的字符长度。(不包括空字符)

4.3常量和c预处理器

#define 使用预处理器定义常量

const  用于限定一个变量为只读,即可以使用,但是不可以更改。(const int MONTHS =12;)

4.4printf()和scanf()

①printf()的转换说明修饰符(*)

②打印较长的字符串

1.使用多个printf()语句;

2.用反斜杠(\)和Enter键组合来断行使光标移至下一行;

3.在两个用双引号括起来的字符串之间用空白隔开;

例如

printf("here is one way to ");
	printf("printf a long string.\n");
	printf("here is one way to \
printf a long string.\n");
	printf("here is one way to"
		" printf a long string.\n");

结果为

here is one way to printf a long string.
here is one way to printf a long string.
here is one way to printf a long string.

4.4.5

使用scanf()

如果用scanf()读取基本变量的值,在变量名之前加上一个&;

如果用scanf()把字符读入字符数组中,不要使用&;

scanf()函数使用空白(换行符,制表符和空格)把输入分成多个字段。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值