资源描述:
《在c语言中输入输出常见的错误》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、在C语言中,输入输出函数有着相当重要的地位,它是我们的程序与用户交互的唯一途径,现在我就将C语言中比较常见的几个输入输出函数介绍给大家,以下这些讲解都是针对VC调试平台。(一) 格式化输入输出函数(1)scanf()格式化输入函数格式输入函数scanf()函数,它的格式为scanf(“格式字符串”,输入列表)。“格式字符串”包含三种类型的字符:a、格式字符,以%开头的字符,用以说明输入列表的数据以何种类型及格式的形式输入。b、普通字符,要求在输入时必须原样一起输入的字符。C、空白字符(空格、跳格键、回车键)作为相邻两个数据的默认分隔符。在scanf()函数中有以下地方需要注意:
2、[1] 在scanf()函数中的格式字符串不存在转义字符,所以:格式字符串中的字符除了格式字符外全部都要原样输入。如:inta;scanf(“%d”,&a);如果我们想把10赋值给a,就需要在键盘上输入的是:10回车,才能把10赋值给a,这里已经不是转义字符,而是普通字符。[2] 输入列表的变量如果是基本类型(即整型、实型、字符型)一定要使用取地址符&(输入字符串到字符数组的情况除外),而且&后必须是变量,不允许是常量或表达式。如:inta,b;scanf("%d%d",a,b);这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值
3、存进去。“&a”指a在内存中的地址。[3] 输入数据时,企图规定精度floata;scanf("%.2f",&a);这样做是不合法的,输入数据时不能规定精度,这里要记住一个程序是不能控制操作它的人来输入数据的精度的。[4] 输入数据的方式与要求不符① scanf("%d%d",&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:3,4输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。②scanf("%d,%d",&a,&b);C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这
4、些字符相同的字符。下面输入是合法的:3,4此时不用逗号而用空格或其它字符是不对的。3 4 又如:scanf("a=%d,b=%d",&a,&b);输入应如以下形式:a=3,b=4[5] 输入字符的格式与要求不一致在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。scanf("%c%c%c",&c1,&c2,&c3);如输入abc字符“a”送给c1,字符“”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。[6] 使用格式字符”%c”录入单个字符时,空格和回车键等字符都会作为有效字符输入,所以需要注意
5、fflush(stdin)的使用。[7] 注意输入列表中的元素的个数要与格式字符串中的格式字符个数相同。[8] 在输入长整形数据和双精度浮点数时,必须使用长度修饰符”l”。[9] 不要在不该使用取地址符的地方使用取地址符。如:charstr[10];Scanf(%c,&str);这里不应该加取地址符&。 (2)printf()格式输出函数格式输出函数printf(),它的格式为printf(“格式字符串”,输出列表)。这里的格式字符串也包含三种类型的字符,但这里和scanf()函数的字符稍有不同。这三种类型的字符分别是:a、格式字符,以%开头的字符,用以说
6、明输出列表的数据以何种格式的形式输出。B、转义字符,提供特殊的格式化控制,由一个“”和一个字符组成。反斜杠会使printf()函数以特殊的方式解释一个字符。C、普通字符,除格式字符和转义字符外的其他字符。在printf()函数中有以下地方需要注意:[1] 输出列表由若干个输出项组成,输出项可以是常量、变量,也可以是表达式。[2] 格式字符串中的格式字符要与后边输出列表中的元素类型一一对应。如: floata=1.9999; printf("%d",a);最终的输出结果是一些乱码。再如: inta=12; printf("%
7、f",a);最终的输出结果是0.000000,这里没有进行类型转换。但是,如果想把上面的整数a以浮点数的形式输出,必须进行强制类型转换。如: inta=12; printf("%f",(float)a);输出的结果是12.000000。[3] 格式字符串中的格式字符的个数要与输出列表中的元素个数相同。如: inta=12; printf("%d,%d",a);将在屏幕上输出一个12以及一个乱码。[4] 在以%.nf这样的格式