C中用scanf()时应注意的一些问题

  最近在做题时遇到了scanf()的一些问题,下面说一下,scanf()中一些需要注意的地方:

先说一下scanf()的格式:

scanf(“格式控制字符串”, 地址表列);

0、格式字符串一般形式如下:

%[*][输入数据宽度][长度]类型

其中有方括号[]的项为任选项,举个*的栗子:

#include <stdio.h>
int main()
{
    int a,c;
    scanf("%3d%*d%d",&a,&c);//第二个%d被略过了
    printf("%d\n%d",a,c);
    return 0;
}

1、scanf函数中没有精度控制,而printf()可以,如下:

#include <stdio.h>
int main()
{
    float a;
  //  scanf("%3.2f",&a); 错误写法
    scanf("%f",&a);
    printf("%3.2f",a);
    return 0;
}

2、在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束,如下:

#include <stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    printf("%d",a);
    return 0;
}

其中数据结束在d,所以输出123

3、在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符,如下:

#include <stdio.h>
int main()
{
    char a,b,c;
    scanf("%c%c%c",&a,&b,&c);
    printf("%c%c%c",a,b,c);
    return 0;
}

其中a为d,b为空格,c为e

4、若想在输入字符时用空格隔开则这样写:

#include <stdio.h>
int main()
{
    char a,b,c;
    scanf("%c %c %c",&a,&b,&c);//之间加上空格
    printf("%c%c%c",a,b,c);
    return 0;
}

注:如果输入的是整形等非字符型数据,根据2、可知道不须这么写,因为空格会被视为非格式串。

本文摘自http://c.biancheng.net/cpp/html/34.html

时间: 2024-08-19 14:15:25

C中用scanf()时应注意的一些问题的相关文章

在做APP前端开发时应注意的一些问题

在做APP前端开发时应注意的一些问题 在整个app开发流程中,app前端开发是一个必不可少的环节,也是一个在app开发过程中重量级的角色.说到这,那么在app应用的前端开发中,又要注意什么问题呢?一.什么是app软件前端开发 App前端开发是移动前端开发中的一个方面,主要是指用户能够看到和接触到的app层面,比如app客户端界面,包括ios客户端和安卓客户端界面. App前端开发使用的技术是html+css+js,同时移动软件前端开发还需要基于PhoneGap等开发平台调用手机核心功能接口(包括

【Stackoverflow好问题】重写(Override)equlas和hashCode方法时应考虑的问题

问题 重写(Override)equlas和hashCode方法时应考虑哪些问题? 精华回答 理论上讲(偏程序语言和数学层面) equals() 定义了对象的相等关系(自反性.对称性.传递性)(有点抽象,更详细说明,请参考javadoc) . 另外,它还具有一致性(也就是说,如果一个对象没有修改,那么这个方法应总是返回相同的值),此外,o.equals(null)应当总是返回false. hashCode()(javadoc)也必须是一致性的(也就是说,如果equal的结果没有变,那么hashc

同步时序设计时应值得注意的事项

同步时序设计时一下事项应值得注意: 异步时钟域的数据转换. 组合逻辑电路的设计方法. 同步时序电路的时钟设计. 同步时序电路的延迟.同步时序电路的延迟最常用的设计方法是用分频或者倍频的时钟或者同步计数器完成所需的延迟,对比较大的和特殊定时要求的延时,一般用高速时钟产生一个计数器,根据计数产生延迟;对于比较小的延迟,可以用D触发器打一下,这样不仅可以使信号延时了一个时钟周期,而且完成了信号与时钟的初次同步.在输入信号采样和增加时序约束余量中使用. 另外,还有用行为级方法描述延迟,如"#5 a<

MySQL运行内存不足时应采取的措施?

排除故障指南:MySQL运行内存不足时应采取的措施? 天一阁@ 老叶茶馆 1周前 导读 排除故障指南:MySQL运行内存不足时应采取的措施? 翻译团队:知数堂藏经阁项目 - 天一阁 团队成员:天一阁-冷锋. 天一阁-Judy .天一阁-神谕 译文校稿:叶师傅 原文出处:<What To Do When MySQL Runs Out of Memory: Troubleshooting Guide> https://www.percona.com/blog/2018/06/28/what-to-

MySQL运行内存不足时应采取的措施

导读 排除故障指南:MySQL运行内存不足时应采取的措施? 原文出处:<What To Do When MySQL Runs Out of Memory: Troubleshooting Guide> https://www.percona.com/blog/2018/06/28/what-to-do-when-mysql-runs-out-of-memory-troubleshooting-guide/ 原文作者:Alexander Rubin 关键词:memory.memory leaks

使用if语句时应注意的问题(初学者)

(1)在三种形式的if语句中,在if关键字之后均为表达式.该表达式通常是逻辑表达式或关系表达式,但也可以是其他表达式,如赋值表达式等,甚至也可以是一个变量. 例:if(a=5)语句: if(b)语句: 只要表达式的值为非零,即为"真". 比较: #include<stdio.h> void main() { int a,b; scanf("%d%d",&a,&b); if (a=b) { printf("%d\n",a

设计师谈单时应避免的几种错误

学会谈单也是设计师必备的技巧之一,杭州五色光软装培训机构为大家总结了一些谈单的注意事项,避免因为谈单技巧的不足而造成客户的流失:  第一项错误:和客户争辩. 当你和客户争辩,你就是间接地说他错了.客户在消费的时候都很讨厌别人说他们错了,尤其是他们显然有错的时侯.他们不喜欢别人当面指出他们的错误. 记住:你的责任是要去赢得客户的签单,签单能给你带来工资.提成等实在的好处,而赢得辩论只满足你的虚荣心.如果客户是在质疑你和公司的诚信,或否定你所做家装方案的品质和努力,你也只是需要适当的解释,或者一语带

网站制作时应规避的一些问题

如今每个公司每个站长天天都在不断的说用户体会度用户体会度,可见用户体会度确实是网站的命脉,就拿baidu近期快照做出的大调整也能够看出,用户体会度确实关于公司网站亦或是自己网站有直接影响.高端网站建造专家冯会岩从事建站多年各类款式的网站也都见过,其中有不少非常差劲的网站,今天针对此疑问我们太刺耳制造网站应当避忌哪些疑问吧. 榜首,网站主页字体,许多公司关于网站的字体没有过多的请求,呈现字体滥用的状况,冯会岩温馨提示尤其是公司网站的字体是非常重要的,千万不要运用非标准字体,这会下降用户体会度; 第

(转)非阻塞Connect对于select时应注意问题

对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接,首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后必须调用bind绑定到一个指定的地址,然后调用int listen(int sockfd, int backlog);进行监听.此时服务器socket允许客户端进行连接,backlog提示没被accept的客户连接请求队列的大小,系统决定实际的值,最大值定义为SOMAXCONN在头文件<sys/so