scanf函数与gets()函数的一点小区别(C语言,入门必看必会)总结在最后哦

例如在一个字符连接的问题中;scanf函数与gets()函数有着明显的区别

#include<stdio.h>
char* S(char* str1,char* str2)//定义一个指针类型的函数,作用为连接两个字符串。 
{
	char*p = str1;
	while(*str1 != '\0')
	*str1++;
	while(*str2 != '\0')
	*str1++ = *str2++;
	*str1 = '\0';
	return p;
 } 
 int main()//主函数
 {
 	char str1[20],str2[20];
 	printf("str1=");
 	//scanf("%s",&str1);
 	gets(str1);
 	printf("str2=");
 	//scanf("%s",&str2);
 	gets(str2);
    printf("连接后的字符为%s",S(str1,str2));
 }

首先,我们注释scanf函数,用gets()函数进行输入,输入str1=1 3 ,str2=1 4 ;(每个数字中间都有空格),结果如下:

 这说明gets()函数会将空格默认为一个字符进行输入;

然后我们注释gets()函数,用scanf函数输入同样的str1=1 3 ;str2=1 4 ;

#include<stdio.h>
char* S(char* str1,char* str2) 
{
	char*p = str1;
	while(*str1 != '\0')
	*str1++;
	while(*str2 != '\0')
	*str1++ = *str2++;
	*str1 = '\0';
	return p;
 } 
 int main()
 {
 	char str1[20],str2[20];
 	printf("str1=");
 	scanf("%s",&str1);
 	//gets(str1);
 	printf("str2=");
 	scanf("%s",&str2);
 	//gets(str2);
    printf("连接后的字符为%s",S(str1,str2));
 }

结果又会是怎样呢?请看下图:

结果很明显,scanf函数在输入时,将空格进行了忽略,并没有输出空格;这使得将空格放在了缓存区,也没办法进行输入str2,结果只能是13;

总结:scanf函数并不会区分空格和回车,scanf函数默认空格与回车的作用相同;而gets()函数会明确区分scanf与gets()这两种函数的区别,将空格默认为一个字符进行输入。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值