黄李昌,俏佳姿,沈阳医保女群p门
C语言在定义scanf函数时,已经包含头文件stdio.h,所以用scanf时,不用添加头文件
int main(void) { char a; scanf("%c",&a); printf("%c\n",a); return 0; }
是完全没有问题的。
scanf函数没有精度控制 如:scanf("%4.8f",&a)是非法的
但宽度是有控制的 如:scanf("%3d",&a)是完全可以的
在输入多个数值时,输入数据之间的间隔可用 空格,TAB键 或 回车键
当程序编译遇到 空格,TAB键,回车键,非法数据(如对 “%d” 输入 “3H”时,H为非法字符 )即认为该数据结束
可能的问题:
(1)
int a,b; scanf("%3d%3d",&a,&b); //输入123456789,程序会将123赋值给a,456赋值给b,其余部分被截去
(2)
char a,b; scanf("%c%c",&a,&b); printf("%c%c\n",a,b); //scanf函数中"%c%c"之间没有空格,输入q w(q空格w)的时候,输出结果只有q //若输入qw,就不会有问题,输出结果是qw
(3)
最后附上scanf实现源码
/*** *scanf.c - read formatted data from stdin * * Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved. * *Purpose: * defines scanf() - reads formatted data from stdin * *******************************************************************************/ #include #include #include #include #include #include #include /*** *int scanf(format, ...) - read formatted data from stdin * *Purpose: * Reads formatted data from stdin into arguments. _input does the real * work here. * *Entry: * char *format - format string * followed by list of pointers to storage for the data read. The number * and type are controlled by the format string. * *Exit: * returns number of fields read and assigned * *Exceptions: * *******************************************************************************/ int __cdecl scanf ( const char *format, ... ) /* * stdin 'SCAN', 'F'ormatted */ { int retval; va_list arglist; va_start(arglist, format); _ASSERTE(format != NULL); _lock_str2(0, stdin); retval = (_input(stdin,format,arglist)); _unlock_str2(0, stdin); return(retval); }
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论