C语言中输入函数的使用

目录

一.scanf的使用

二.getchar的使用 

三.gets的使用 

总结


一.scanf的使用

scanf 和 printf 的使用

  • scanf 就是我们经常使用的输入函数,可以对整型,浮点型,字符型进行输入,但是scanf 遇到空格\n就会停止输入,取到空格和 \n 前面的数据要输入的字符串里有空格怎么办,下面我会写到使用 gets() 函数去输入带有空格的字符串
  • printf 基本上所有数据都可以用 printf 输出,没有什么特别之处 

 简单举个例子

#include<stdio.h>

int main()
{
	int a = 0;
	scanf("%d", &a);  //别忘了 & 符号
	printf("%d\n", a);
	return 0;
}

二.getchar的使用 

 getchar 和 putchar 的使用

  • getchar 字符的输入,一次只能输入一个字符。该函数以无符号 char 强制转换为 int 的形式返回读取的字符(返回值是字符对应的ASCII码值),如果到达文件末尾或发生读错误,则返回 EOF(当我们输入的字符不止一个字符时,其他字符就会进入缓冲区,等待后续的getchar去调用,后续的读取不用我们按键,直接读取缓存区的字符,一直到读取完缓存区的字符
  • putchar 字符的输出,一般和 getchar 一起使用(将 getchar 转换的ASCII码值,转化成对应的字符

简单代码

#include<stdio.h>
int main()
{
	int a = 0;     //这里定义整型,getchar会将字符型强制转换成整型
	while ((a = getchar()) != EOF)
	{
		putchar(a);
	}
	return 0;
}

 

上图中输入 abc ,输出的也是 abc :getchar每次只能读取一个字符,其他的字符都存在缓存区,当缓存区有字符时,我们是不能输入的,等待后续的getchar去调用读取,然后通过putchar去输出,一直到读取完缓存区的所有字符(Ctrl+z就是文件结束符)

三.gets的使用 

gets和puts的使用

  • gets字符串的输入,可以无限读取,不会判断上线,以回车结束读取(还是要考虑buffer(缓存器)空间的,确保空间足够大,如果buffer空间不够,将会溢出,溢出的内容会被写入到堆栈中,破坏相关变量的值
  • puts字符串的输出(与printf("%s\n",s);的作用相同),只能输出字符串,遇到 '\0' 就停止

  

 

之前刷题时间就遇到了使用gets的情况

题目:字符串的分类统计

输入一行字符,分别统计出其中英文字母、数字、空格其他字符的个数。

题目要求是有空格的,用 scanf() 去输入肯定不行,scanf() 遇到空格就结束了,所以就要使用gets

#include<stdio.h>
#include<string.h>
int main()
{
    char str[100];
    int i, letter = 0, number = 0, space = 0, other = 0;
    gets(str);             //字符串输入
    for (i = 0; i < strlen(str); i++)//用到strlen函数需要string.h头文件
    {
        if (str[i] >= 'a' && str[i] <= 'z' || str[i] >= 'A' && str[i] <= 'Z')
            letter++;        //字母个数增一
        else if (str[i] >= '0' && str[i] <= '9')//单引号易出错
            number++;        //数字个数增一
        else if (str[i] == ' ')
            space++;         //空格个数增一
        else
            other++;         //其他字符个数增一
    }
    printf("%d %d %d %d", letter, number, space, other);
    return 0;
}

总结

  • 上面就是C语言中输入函数的使用,虽然不是很详细,但是应该可以让我们知道在特殊情况下应该怎么去选择输入函数(就像字符串的分类统计的题目,是要输入空格的,这个时候就应该选择gets
  • 我们大多数使用的是 scanf() ,了解更多为了防止在做题时有更多的选择,而不卡壳

感谢大家的观看,希望你能从这篇文章中学到一些东西(如有错误,提醒我,我会及时修改)

谢谢大家!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值