C语言学习(二)格式输入输出


第四章 顺序程序设计


4.4字符数据的输入输出

1.putchar()函数

向终端输出一个字符。能输出但个字符,也能输出控制字符。例如:putchar('a');putchar('\n');


2.getchar()函数

从终端输入一个字符。其一般形式就是getchar();函数的值就是从输入设备得到的字符。

getchar()函数只能接收一个字符,得到的字符可以赋值给一个字符变量或整形变量。



4.5格式输入输出

1.printf函数

作用是向终端输出若干任意类型的数据(putchar只能输出字符,而且只能输出一个字符)

一般形式为:printf(格式控制,输出列表);例如:printf(“%d,%c\n”,i,c);


2.格式字符

1d格式符,用来输出十进制整数.有几种用法

a%d,按十进制整形数据的实际长度输出

b)%mdm为制定输出字段的宽度.如果数据的位数小于m,则左端补以空格,若大于m则按实际位数输出。

c)%ld,输出长整形数据.(%mld,指定输出字段的宽度)



2o格式输出,以八进制整数形式输出。将符号位也一起作为八进制数的一部分输出。例如:

inta = -1;

printf(“%d,%o”);

输出为:-1 ,177777 ,不会输出带负号的八进制整数。

也可以制定字段宽度,例如:printf(“%8o”,a);


3) x格式输出,以十六进制整数形式输出,不会出现负的十六进制,可以制定宽度.


4) u格式符, 用来输出unsigned型数据,以十进制形式输出。


5c格式符,用来输出一个字符。


6s格式符,用来输出一个字符串。有几种用法,

a)%s, 输出字符串

b)%ms,输出字符串占m列,如果字符串本身长度大于m,则突破m的限制,将字符串全部输出。若小于m,则左补空格。

c)%-ms, 如果字符串长度小于m,则在m列范围内,字符串向左靠,右补空格。

d)%m.ns,输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格。

e)%-m.ns,mn含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则m自动取n值,即保证n个字符正常输出。

7f格式符,用来输出实数,以小数形式输出。 有以下几种用法。

a)%f,不指定字段宽度,由系统自动指定,使整数部分全部输出,并输出6位小数。应该注意的是,在输出的数字中并非全部数字都是有效数字。

例如:

voidmain() {

floatx,y;

x= 111111.1111111;

y= 222222.2222222;

printf("%f\n",x+y);

}


输出:333333.328125只有前7位数字是有效数字


也可以用%f格式输出双精度数,它的有效位一般为16位,例如:

voidmain() {

doublex,y;

x= 11111111111111.1111111;

y= 22222222222222.2222222;

printf("%f\n",x+y);

}

输出:33333333333333.335938


b) %m.nf,指定输出的数据共占m列,其中有n位小数。如果数值长度小于m,则左端补空格。

c) %-m.nf,与上基本相同,只是输出的数值向左端靠,右端补空格。



8e格式符,以指数形式输出实数。

a) %e ,不指定输出数据所占的宽度和数字部分的小数位数。例如:

voidmain() {

printf("%e",123.456);

}

输出:1.234560e+02


b) %m.ne%-m.ne,此处n指拟输出的数据的小数部分(尾数)的小数位数。



9g格式符,用来输出实数,它根据数值的大小,自动选择f格式或者e格式(选择输出时占宽度较小的一种),且不输出无意义的零。



3.scanf函数

1.一般形式scanf(格式控制,地址列表);例如:


voidmain() {

int a,b,c;

scanf("%d,%d,%d",&a,&b,&c);

printf("%d,%d,%d\n",a,b,c);

}

(因为scanf()的格式控制是%d,%d,%d”所以输入时,每个输入后要加‘,’ ,如:23,567,213)



2.格式说明

1).对于unsigned型变量所需的数据,可以用%u,%d或者%o,%x格式输入。

2).可以指定输入数据所占的列数,系统自动按它截取所需数据,例如:

scanf(“%3d%3d”,&a,&b);

输入:123456系统将自动将123赋值给变量a,456赋值给变量b

3).如果在%后有一个“*”附加说明符,表示跳过它指定的列数.例如:

scanf(“%2d%*3d %2d”,&a,&b);

输入:12345 67系统将自动将12赋值给变量a,%*3d表示读入3位整数但不赋值给任何变量。然后再读入2位整数67赋值给变量b


4).输入数据时不能规定精度,例如:


scanf(“%7.2d”,&a);

是不合法的,不能企图这样的scanf函数输入1234567而使得a的值为12345.67.

3.使用scanf应该注意的问题

1).scanf函数中的第二个参数应该是变量地址,而不是变量名。


2).如果在第一个参数中,除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。例如:

scanf(“%d,%d,%d\n”,&a,&b,&c);则在输入数据的时候也要输入‘,’

scanf(“%d %d”,&a,&b);则在输入数据的时候也要输入两个(或多于两个)空格;

scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);同上


3).在用”%c”格式输入字符时,空格字符和“转义字符”都作为有效字符输入。例如,

scanf(“%c%c%c”,&a,&b,&c);

输入:ab c则系统会将'a'字符赋值给a变量,‘’空格字符赋值给b变量,‘b’字符赋值给c变量。


4).在输入数据时,遇到下列情况认为该数据结束.

a).遇到空格,或按回车(enter),或按跳格(tab);

b).按指定的宽度结束,如”%3d”,只取3

c).遇非法输入。


文章链接:http://blog.csdn.net/murongshusheng/article/details/8603279




你可能感兴趣的:(C语言学习(二)格式输入输出)