字符串与printf函数和scanf函数

1.在C语言中函数strlen获取字符串的长度——该函数的头文件为<string.h>

strlen函数和sizeof函数的区别:strlen函数给出的是字符串的长度,你输入多少字符就是多少,并且不会加上空字符(‘\n’),而sizeof函数给出的是整个数组的长度

例:

#include<stdio.h>
#include<string.h>	//函数strlen的头文件

#define N "     you jump,I jump!"	//在字符串中非空格字符前由5个空格字符

int main(void)
{
	char name[20]={" hello world!"};	//在这个字符串中最开始有个空格字符
	char lose[20];
	scanf("%s",lose);

	printf("%d %d\n",sizeof(name),strlen(name));	//比较两个字符串在两个函数的输出值的不同
	printf("%d %d\n",sizeof(N),strlen(N));

	printf("%s\n",name);	//对比输出的字符串的格式的不同
	printf("%s\n",N);
	printf("%s\n",lose);

	return 0;
}

最后的输出结果为:

在这里插入图片描述
注:在这里,scanf会跳过读取的空格字符,就如输入"I am MT!",但最后输出的结果前却没有空格,这是scanf函数读取时跳过了前面的空格字符。对比完图中结果,对strlen函数和sizeof函数的不同有些具体的印象了

如果你还是没有懂,也可以这么说,在格式控制字符串中。像"%d,%d"这样的,scanf()在读取第一个数字之后,就会丢掉逗号,开始读取下一个数字。而格式控制字符串中的空格(包括space、Tap、Enter)也是一样被scanf()丢弃,

2.字符串都是存储在char类型的数组中的,数组由连续的存储单元组成,每个单元存储一个字节。

在字符串的结尾,还有一个被隐藏的空字符( ‘\0’ ,null character),它被用来标识字符串的结束

3.scanf函数在读取输入的时候,除了转换说明为%c有些特殊外,都会跳过输入的空格字符,读取第一个非空格字符

scanf函数在读取第一个非空格字符后,直到读到空格字符(包括Tap、enter)就会认为字符串到此结束,这也使一个%s只能读取字符串中的一个单词,但不会读取一整句

scanf函数的转换说明为%c的时候,若%c前没有空格,从输入的第一个字符开始读取;若%c前有空格,则跳过输入的空格字符,从第一个非空格字符开始读取

4.格式字符串中转换说明的格式就是输入输出的格式,如在两个转换说明的中间加上一个空格字符或一个逗号,输入输出的格式也会是这样

例:

#include<stdio.h>
int main(void)
{
	char name[20];
	char moon[20];
	scanf("%s",name);
	scanf("%s",moon);
	printf("%s %s\n",name,moon);	//格式字符串中的空白代表着跳过下一个输入项前所有的空白
	printf("%s   %s\n",name,moon);
	printf("%s,%s\n",name,moon);
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值