scanf的使用与注意-C语言

在C语言中,scanf函数作为一个阻塞式函数,其原型在标准输入输出库头文件stdio.h中,通过编码之前的调用即可在程序中进行使用。

scanf函数:

格式:scanf("格式控制符",输入的地址列表);

格式控制符:规定数据输入的格式,由格式控制符和普通的字符组成,格式控制符和%一起组合使用,说明输入数据的数据类型。

输入的地址列表:输入项与格式控制字符串在类型和数量上要对应,如果有多个输入项时,各个地址之间以逗号“,”分隔,输入格式和变量类型要保持一致。

在C语言中,一个变量的地址可以过&地址运算符得到,例如:定义变量a,b,则他们的地址为&a,&b.

scanf函数的常见使用方法:

获取输入的单个整型或实数型数据。

#include <stdio.h>
int main(int argc,const char *argv[]){
int num;
printf("请输入一个数字:\n");
scanf("%d",&num);
printf("你输入的值为%d\n");
return 0;
}

scanf的时候不能制定%m.n格式。

在scanf函数中\n有独有的函数,所以不能像在printf函数中那样使用\n。printf(“%d\n”,num);

scanf函数的使用注意:

1.如果在输入的时候,输入了多个空格,回车和tab都会被系统忽略;

2.如果要获取的内容是多个整数,中间输入了多个空格,回车,tab都会被系统忽略。

在编译通过输入值时,直到符合的内容前,所输入的回车,空格,tab都会被系统忽略。

整型和实数型多个参数输入的时候,加入回车空格tab也都不产生影响。

1.非法的格式输入,得不到正确的值:

2.混合整形和字符型数据接收 当整形的数和字符混合输入时,要避免“空格” 添麻烦

3.为防止混合输入 空格 造成的错误,可以通过添加普通的分隔符解决

总结:

1)接受一个数字 int a;

scanf("%d",&a);

2)接受多个数字

3)接受的是数字和字符混合

4)scanf的运行原理

地址怎么来的? &-取地址符号

时间: 2024-10-19 22:24:56

scanf的使用与注意-C语言的相关文章

C语言编程之--scanf()函数与getchar()函数搭配来理解C程序的输入缓存(buffer)

博主最近在学习C语言编程,在书中的代码示例中出现了下面的代码段: #include<stdio.h> int main() { char a[5]; int i; printf("请依次输入值:\n"); for(i=0;i<5;i++) { scanf("%c",&a[i]); getchar(); //为什么要加一个getchar()? } printf("\n"); for(i=0;i<5;i++) { pr

C语言scanf函数详解

函数名: scanf 功 能: 运行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息.能够读入不论什么固有类型的数据并自己主动把数值变换成适当的机内格式. 其调用格式为:      scanf("<格式化字符串>",<地址表>); scanf()函数返回成功赋值的数据项数,出错时则返回EOF. 其控制串由三类字符构成: 1.格

【C语言天天练(二十)】scanf函数详解

引言:scanf函数虽然是学习C语言时比较早就接触的一个函数,但在使用过程中,发现真正掌握它却并不容易.本文就通过各种例子来详细的总结一下该函数的各种用法,假设它的调用格式为 scanf("<格式化字符串>",<地址表>). 1.一般使用scanf函数时都是为某个变量赋值,不考虑它的返回值.但是任何函数都是需要返回的(即使返回类型用void,也可以认为只是调用了return语句,只是并没有返回什么东西而已),同样的scanf函数也是有返回的,它的返回值是成功读取

C语言可变参数函数实现原理

一.可变参数函数实现原理 C函数调用的栈结构: 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈. 本文地址:http://www.cnblogs.com/archimedes/p/variable-parameter.html,转载请注明源地址. 例如,对于函数: void fun(int a, int b, int c) { int d; ... } 其栈结构为 0x1ffc-->d 0x200

C语言刷新缓冲区(转载)

C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 char *fgets(char * restrict s, int n, FILE * restrict stream); char *gets(char *s);//可能导致溢出,用fgets代替之. //格式化输入系列 int fscanf(FILE * restrict stream, co

C语言缓冲区清空

C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 char *fgets(char * restrict s, int n, FILE * restrict stream); char *gets(char *s);//可能导致溢出,用fgets代替之. //格式化输入系列 int fscanf(FILE * restrict stream, co

C语言清空输入缓冲区的N种方法对比(转)

C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 char *fgets(char * restrict s, int n, FILE * restrict stream); char *gets(char *s);//可能导致溢出,用fgets代替之. //格式化输入系列 int fscanf(FILE * restrict stream, co

C语言常犯错误

语言的最大特点是:功能强.使用方便灵活.C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误.看着有错的程序,不知该如何改起,本人通过对C的学习,积累了一些C编程时常犯的错误,写给各位学员以供参考. 1.书写标识符时,忽略了大小写字母的区别. main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同

NSDate的简单用法

NSDate  使用date方法获取的当前时间  是0时区的时间 NSDate *date = [NSDate date]; NSLog(@"%@",date); //如果想获取当前时区的当前时间 需要 + 8小时 NSDate *now = [NSDate dateWithTimeIntervalSinceNow:8 * 60 * 60]; NSLog(@"%@",now); //获取昨天此时时间 NSDate *yesterday = [NSDate dateW

【Windows编程】系列第四篇:使用Unicode编程

上一篇我们学习了Windows编程的文本及字体输出,在以上几篇的实例中也出现了一些带有“TEXT”的Windows宏定义,有朋友留言想了解一些ANSI和Unicode编程方面的内容,本章就来了解和学习一些Windows下关于ANSI和Unicode方面的编程基础. 计算机最早在美国诞生,所以最开始都是以英语为作为交互语言,由于只有26个字母,用一个字节(范围-128 ~ 127)表示,这个范围足够表示26个因为字符和一些常用的控制字符,这个就是ASCII编码.因此最早的各种程序设计语言以及使用的