函数gets()的用法

gets()函数和scanf()对比

先看代码:

#include<stdio.h>
int main(void){
	char a1[10], a2[10],a3[10];
	scanf( "%s%s",a1,a2);
//gets(a2);
	gets(a3);
	puts(a1);
	puts(a2);
	puts(a3);
//	printf("%s\n",ch1);
//	printf("%s",ch2);
	printf("end..."); 
	return 0;
}

在这里插入图片描述
再看一段代码:

#include<stdio.h>
int main(void){
	char a1[10], a2[10],a3[10];
	scanf( "%s",a1);
	gets(a2);
	gets(a3);
	puts(a1);
	puts(a2);
	puts(a3);
//	printf("%s\n",ch1);
//	printf("%s",ch2);
	printf("end..."); 
	return 0;
}

在这里插入图片描述

a. 可以看到a1中放的是joncy, scanf是用空格来结束的。 从结果中来看, scanf在读完之后空格还在缓冲区中。 而gets是接收空格的,所以第二张图中输出的 a2 前有空格存在。

b. 从第一张图中, 还可以看出scanf也不识别回车, 同样也把回车留在了缓存区中。 而gets是接收回车的, 所以第一张图中的 a3 输出的是回车。

看代码:

#include<stdio.h>
int main(void){
	char a1[10],a2[10],a3[10],a4[10];
	gets(a1);
	gets(a2);
	gets(a3);
	gets(a4);
	puts(a1);
	puts(a2);
	puts(a3);
	puts(a4);
	printf("end...")
	return 0;
}

在这里插入图片描述
c. 这个图可以看到,gets函数能够接收字符串, 而且不把回车符号留在缓存区中。

#include<stdio.h>
int main(void){
	char a1[10];
	gets(a1);
	char c = getchar();
	puts(a1);
	printf("%c\n",c);
	printf("end...");
	return 0;
}

在这里插入图片描述

#include<stdio.h>
int main(void){
	char a1[10],a2[10];
	gets(a1);
	char c = getchar();
	puts(a1);
	printf("%c\n",c);
	scanf("%s",a2);
	char c2 = getchar();
	puts(a2);
	printf("%c",c2);
	printf("end...");
	return 0;
}

在这里插入图片描述
d. 要注意这里puts自己把回车符吸收了,所以要等待输入。但是scanf没有,所以c2是换行符。

注:gets函数把字符串输出到标准输出设备,将’\0’转换为回车换行。但是scanf不会,末尾还是’\0’,且空格,换行或者tab都会留在缓存区。

这是一段百度词条的代码:


> #include <stdio.h>
> #include <conio.h> int main(void) {
>     int i;
>     char string[20];
>     for(i=0;i<10;i++)
>         string[i]='a';
>     puts(string);
>     getch();
>     return 0; }

这是运行结果:
在这里插入图片描述

确实我们看到, gets看不到 ‘\0’ 是不会结束的。


#include <stdio.h>
#include <conio.h> 
/*
	字符串的末尾\0不会输出如果在%c的情况下 
	gets()把换行符吸收转换成\0 
*/
int main(void) {
     int i;
     char string[10];
//     for(i=0;i<10;i++)
//         string[i]='a';
gets(string);
 for(i=0;i<10;i++)
     printf("%d",string[i]);
    // getch();
    return 0; 
	}

编程中遇到的问题:
scanf("%s,%s",a1,a2); 千万不要这样写,字符串输入最好分开写,或者把逗号去掉。

本文引用百度词条:https://baike.baidu.com/item/puts/4747927?fr=aladdin

更多干货文章,编程资源,请关注公众号『Carry互联网笔记』
在这里插入图片描述

  • 89
    点赞
  • 335
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值