scanf的用法

今天上论坛看到有人问的关于C语言代码中的问题,发现出现了在scanf函数中带有'\n',记得当年刚开始学得时候,也出现过类似的问题,然后看到有人归纳了scanf的用法,就转载到自己的blog以方便以后可以复习。

*****************************************************************************************************************************************************************************************

转载自http://blog.csdn.net/u012421456/article/details/18501309


scanf()【通过键盘将数据输入到变量中】

它有两种用法:

用法一: scanf“输入控制符”,输入参数);

功能:  将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入已输入参数的值为地址的变量中。

例如:

[plain] view plaincopy
  1. # include <stdio.h>  
  2.    
  3. int main(void)  
  4. {  
  5.     int i;  
  6.     scanf("%d",&i);//如果输入123  
  7.     printf("i=%d\n",i);//输出结果为i=123  
  8.     return 0;  
  9. }  

用法二: scanf(“非输入控制符 输入控制符”,输入参数);

功能: 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入已输入参数的值为地址的变量中(非输入控制符必须原样输入)。

例如:

[plain] view plaincopy
  1. # include <stdio.h>  
  2.    
  3. int main(void)  
  4. {  
  5.     int i;  
  6.     scanf("m%d",&i);//输入m123正确,输入123错误  
  7.     printf("i=%d\n",i);//输入m123,输出结果为i=123  
  8.     return 0;  
  9. }  

另外,需要注意的是,使用scanf之前最好再使用printf进行操作说明(即提示用户以什么样的方式进行输入)

例如:

[plain] view plaincopy
  1. # include <stdio.h>  
  2.    
  3. int main(void)  
  4. {  
  5.     int i,j;  
  6.    
  7.     printf("请输入两个数,中间用空格或回车隔开:");  
  8.     scanf("%d %d",&i,&j);//输入的两个数之间是空格或回车  
  9.     //scanf("%d,%d",&i,&j);//输入的两个数之间是逗号(逗号是一个非输入控制符,非输入控制符必须原样输出)  
  10.     printf("i=%d j=%d\n", i, j);  
  11.    
  12.     return 0;  
  13. }  
  14.    

还有,scanf中尽量不要使用非输入控制符,尤其不要使用 \n

例如:

[plain] view plaincopy
  1. # include <stdio.h>  
  2.    
  3. int main(void)  
  4. {  
  5.     int i,j;  
  6.    
  7.     //使用scanf之前最好先使用printf进行一个操作说明,另外scanf中尽量不要使用非输入控制符,尤其不要用\n  
  8.     printf("请输入两个值,中间用空格或回车隔开:");  
  9.     //scanf("%d %d\n",&i,&j);//在scanf中不要使用\n,这样不好  
  10.     scanf("%d %d",&i,&j);//输入的两个数之间是空格或回车  
  11.     //scanf("%d,%d",&i,&j);//输入的两个数之间是逗号              逗号是一个非输入控制符,非输入控制符必须原样输出  
  12.   
  13.     printf("i=%d j=%d\n", i, j);  
  14.    
  15.     return 0;  
  16. }  

最后,为了防止当程序中有多个输入时,用户在前边的输入有误导致影响到下面的输入,我们可以在输入的后边添加一个

while ( (ch=getchar()) != '\n')

continue;   

例如:

[plain] view plaincopy
  1. # include <stdio.h>  
  2.    
  3. int main(void)  
  4. {  
  5.     int i;  
  6.     char ch;//添加字符数据  
  7.    
  8.     scanf("%d",&i);  
  9.     printf("i = %d\n",i);  
  10.    
  11.     while ( (ch=getchar()) != '\n')//把用户前边的非法输入消除!!!  
  12.     continue;                      //重点!  
  13.     int j;  
  14.     scanf("%d",&j);  
  15.     printf("j=%d",j);  
  16.    
  17.     return 0;  
  18. }  

好了, 以上就是scanf的基本用法 ,第一次写博客感觉有些吃力,相信以后会好一些

 【所有代码均在window系统下VC6.0下运行通过】

(如有错误,敬请指正)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

qldump 备份所有表_MySQL中的备份和恢复是怎样执行的?

- 点击上方“中国统计网”订阅我吧&#xff01;-MySQL备份MySQL中的逻辑备份是将数据库中的数据备份为一个文本文件&#xff0c;备份的文件可以被查看和编辑。在MySQL中&#xff0c;使用mysaldump工具来完成备份。有以下3种来调用mysqldump&#xff1a;1. 备份指定的数据库&…

将系统默认记事本替换成自己喜欢的文本编辑器

找寻了这么长时间的编辑器&#xff0c;感觉还是Notepad2最适合自己了。打开效率快 界面简洁 并且还能直接按Esc进行关闭这个最喜欢了。只是它的图标有点丑。。 下面就记录一下 将Notepad2替换成系统记事本。 首先&#xff1a;我们将notepad2.exe重命名为notepad.exe并复制一份名…

linux系统管理与服务器配置高志君_如何在 Linux 上安装、配置 NTP 服务器和客户端?...

你也许听说过这个词很多次或者你可能已经在使用它了。在这篇文章中我将会清晰的告诉你 NTP 服务器和客户端的安装。-- Magesh Maruthamuthu你也许听说过这个词很多次或者你可能已经在使用它了。在这篇文章中我将会清晰的告诉你 NTP 服务器和客户端的安装。之后我们将会了解 Chr…

latex使用

目录 工具支持中文方法eps图片转换给目录加上超链接修改文字颜色C代码式样超链接工具 首先&#xff0c;推荐使用ubuntu下的图形界面tex编辑工具Kile&#xff0c;同时该工具支持界面的编辑&#xff0c;与pdf文件的生成。 由于我只需要简单的使用tex文件生成pdf&#xff0c;就可以…

8位可控加减法器_行测高分技巧-资料分析之有效数字加减法取舍

资料分析是我们行测试卷中得分率较高的一个部分&#xff0c;所以对资料分析这一部分的题目我们必须把握。但是做题过程中&#xff0c;考生碰到一些数字较大&#xff0c;列式复杂的题目&#xff0c;就无从下手&#xff0c;不知如何应对&#xff0c;今天陕西京佳教育就和各位考生…

《linux c编程指南》学习手记4

7.1 文件系统简介 7.1.1 文件 文件类型&#xff1a;普通文件、目录文件、链接文件、设备文件、管道文件 文件权限&#xff1a;r w x 访问权限&#xff1a;文件所有者、文件所有者同组用户、其他用户 7.1.2 索引节点 7.1.3 文件系统 树形层次结构系统&#xff0c;文件最终都归结…

3层vni vxlan_方便业务迁移,大型企业数据中心VXLAN大二层基础,一分钟了解下

一、VXLAN 简介(1)定义RFC7348 定义了 VLAN 扩展方案 VXLAN(Virtual eXtensible Local Area Network)。VXLAN 采用 MAC in UDP(User Datagram Protocol)封装方式&#xff0c;是 NVO3(Network Virtualization overLayer 3)中的一种网络虚拟化技术。(2)目的作为云计算的核心技术之…

android shape的用法总结

<?xml version"1.0" encoding"utf-8"?><shape xmlns:android"http://schemas.android.com/apk/res/android"> <gradient android:startColor"#c0000000" android:endColor"#c0000000" …

设置dns_网络速度缓慢怎么办?轻松一键修改DNS设置让网速提升五倍

不知道大家有没有这种情况的发生&#xff0c;在家上网或者看智能电视&#xff0c;打开一个普通网页&#xff0c;明明自己办的是100M的宽带&#xff0c;结果慢得要死&#xff0c;还动不动弹出各种各样的广告&#xff0c;然后这时你又杀毒&#xff0c;又去清内存&#xff0c;结果…

C语言学习笔记(1)--基本概念和函数用法

最近开始重新学习C语言&#xff0c;所谓“好记性不如烂笔头”&#xff0c;把一些要记住的基本概念和一些函数用法&#xff0c;无论是书上看到的&#xff0c;或者是在别人的博客和论坛上帖子看到的&#xff0c;都归纳到这篇文章中&#xff1a; 2014-10-12 1、声明和定义。他们…

DNN常用控件总结

DNN常用控件总结 ——DNN 学习 1. Calendar一般属性配置&#xff1a; <dnn:DnnCalendar ID"dcEvent" runat"server" CssClass"Calendar" Skin"Windows7" AutoPostBack"true" DayNameFormat"Short" DefaultC…

8s nfs 挂载文件_把你的树莓派家庭实验室变成一个网络文件系统 | Linux 中国

导读&#xff1a;使用 NFS 服务器将共享文件系统添加到你的家庭实验室。                             本文字数&#xff1a;8554&#xff0c;阅读时长大约&#xff1a;12分钟https://linux.cn/article-12413-1.html作者&#xff1a;Chris Collins译者&#xff…