其实puts(),gets()属于字符串输入函数。

putchar()与getchar()属于字符输入函数。

1.字符函数

#include<stdio.h>
int main(){
char c;
printf(“请输入一个字符:”);
c=getchar();
putchar(c);
return ;
}

 输出结果如下:记住下面输出的虽然是数字,本质上是字符。

2.字符串函数

#include<stdio.h>
int main(){
char str[];
printf("请输入一组长度不长于20的字符串:");
gets(str);
puts(str);
return ;
}

3.因为上面都是单次输入,所以不用考虑回车符滞留在内存所带来的错误,下面带来由于for循环带来的回车符所引起的错误:

#include<stdio.h>
int main()
{
int i = ;
for (i = ; i < ; i++)
{
printf("请输入一个字符:");
char c = getchar();
putchar(c);
printf("\n"); }
return ;
}

你会发现虽然输出了正确结果,但是会多输出一个空白的,其实这个的就是回车。你第一次输入的时候输了一个字符‘2’,而且按了一下回车,所以此时你存入内存存了这两个字符,但是getchar();只能接受一个,并且是第一个字符,这样的话,内存中的回车符就滞留了。所以默认不用再输入一个字符给getchar(),因为回车符直接赋值给getchar()了,所以解决方法是在getchar()下面再加一个getchar()来消灭掉多余的回车符导致的错误。

修改后的代码:

#include<stdio.h>
int main()
{
int i = ;
for (i = ; i < ; i++)
{
printf("请输入一个字符:");
char c = getchar();
getchar();
putchar(c);
printf("\n"); }
return ;
}

4.因为gets与puts是字符串接收函数,所以没有getchar()那么矫情,所以不会有滞留问题

#include<stdio.h>
int main()
{
int i = ;
for (i = ; i < ; i++)
{
char str[];
printf("请输入长度不长于20的字符串:");
gets(str);
puts(str);
}
return ;
}

 

最新文章

  1. js的Array的map和sort实现方法
  2. Java %c0%ae 安全模式绕过漏洞
  3. 如何做好IT运营.
  4. delphi 枚举类型
  5. Java学习第五天
  6. bzoj4080
  7. 十个最好的Java性能故障排除工具
  8. bat编程基本知识
  9. char与varchar、nvarchar区别
  10. JQuery开发报错集锦
  11. brew 安装指定版本命令行工具 tmux 多版本实现
  12. linux服务器运维
  13. MVC设置启动页
  14. python tkinter-按钮.标签.文本框、输入框
  15. 你在AutoHotKey面前居然敢比调音量 - imsoft.cnblogs
  16. Vuforia AR实战教程
  17. 15.Git面试题
  18. 线程的同步之Synchronized的使用
  19. 170331、58到家MQ如何快速实现流量削峰填谷
  20. springboot2.0 集成elasticsearch,实现检索、分页、排序

热门文章

  1. [gitHub实践] git基础:远程仓库的使用
  2. 1093 字符串A+B (20 分)C语言
  3. 【转】c#中数组赋值方法
  4. Centos7下创建和管理用户
  5. RabbitMQ入门之Hello World
  6. 第一篇博客-- 走上IT路
  7. 【UWP】使用 LiteDB 存储数据
  8. Django 添加 app
  9. [bzoj4447] [loj#2010] [Scoi2015] 小凸解密码
  10. idea命令行、撤销commit