精华内容
下载资源
问答
  • C语言输入输出格式

    2019-03-18 16:20:47
    系统讲述了C语言输入输出格式系统讲述了C语言输入输出格式
  • c语言输入输出格式

    万次阅读 多人点赞 2018-06-11 20:39:58
    //最近被某题的输入输出卡了。。...在C语言中,所有的数据输入/输出都是由库函数完成的。因此都是函数语句。本小节先介绍printf函数和putchar函数。printf函数printf函数称为格式输出函数,其...

    //最近被某题的输入输出卡了。。。转一波随时看。。。菜哭

    <span style="font-family:KaiTi_GB2312;font-size:18px;">本小节介绍的是向标准输出设备显示器输出数据的语句。在C语言中,所有的数据输入/输出都是由库函数完成的。因此都是函数语句。本小节先介绍printf函数和putchar函数。printf函数printf函数称为格式输出函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示器屏幕上。  
      
    一、printf函数调用的一般形式  
      
    printf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中。但作为一个特例,不要求在使用 printf 函数之前必须包含stdio.h文件。printf函数调用的一般形式为: printf(“格式控制字符串”,输出表列)其中格式控制字符串用于指定输出格式。格式控制串可由格式字符串和非格式字符串两种组成。格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等。如“%d”表示按十进制整型输出,“%ld”表示按十进制长整型输出,“%c”表示按字符型输出等。后面将专门给予讨论。  
      
    非格式字符串在输出时原样照印,在显示中起提示作用。输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。  
    void main()  
    {  
    int a=88,b=89;  
    printf("%d %d\n",a,b);  
    printf("%d,%d\n",a,b);  
    printf("%c,%c\n",a,b);  
    printf("a=%d,b=%d",a,b);  
    }  
    a<--8,b<--89  
      
    printf("%d %d\n",a,b);  
    printf("%d,%d\n",a,b);  
    printf("%c,%c\n",a,b);  
    printf("a=%d,b=%d",a,b);  
    本例中四次输出了a,b的值,但由于格式控制串不同,输出的结果也不相同。第四行的输出语句格式控制串中,两格式串%d 之间加了一个空格(非格式字符),所以输出的a,b值之间有一个空格。第五行的printf语句格式控制串中加入的是非格式字符逗号,因此输出的a,b值之间加了一个逗号。第六行的格式串要求按字符型输出 a,b值。第七行中为了提示输出结果又增加了非格式字符串。  
      
    二、格式字符串  
      
    在Turbo C中格式字符串的一般形式为: [标志][输出最小宽度][.精度][长度]类型其中方括号[]中的项为可选项。各项的意义介绍如下:  
    1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:  
    表示输出类型的格式字符       格式字符意义  
    d                 以十进制形式输出带符号整数(正数不输出符号)  
    o                 以八进制形式输出无符号整数(不输出前缀O)  
    x                 以十六进制形式输出无符号整数(不输出前缀OX)  
    u                 以十进制形式输出无符号整数  
    f                 以小数形式输出单、双精度实数  
    e                 以指数形式输出单、双精度实数  
    g                 以%f%e中较短的输出宽度输出单、双精度实数  
    c                 输出单个字符  
    s                 输出字符串  
    2.标志  
    标志字符为-、+、#、空格四种,其意义下表所示:  
    标志格式字符      标 志 意 义  
    -           结果左对齐,右边填空格  
    +          输出符号(正号或负号)  
    空格                           输出值为正时冠以空格,为负时冠以负号  
    #          对c,s,d,u类无影响;对o类, 在输出时加前缀0;  
                                    对x类,在输出时加前缀0x;对e,g,f 类当结果有小数时才给出小数点  
    3.输出最小宽度  
    用十进制整数来表示输出的最少位数。 若实际位数多于定义的宽度,则按实际位数输出, 若实际位数少于定义的宽度则补以空格或0。  
    4.精度  
    精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数字,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则截去超过的部分。  
    5.长度  
    长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。  
    void main(){  
    int a=15;  
    float b=138.3576278;  
    double c=35648256.3645687;  
    char d='p';  
    printf("a=%d,],%o,%x\n",a,a,a,a);  
    printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);  
    printf("c=%lf,%f,%8.4lf\n",c,c,c);  
    printf("d=%c,�\n",d,d);  
    } a<--15  
    b<--138.3576278  
    c<--35648256.3645687  
    d<--'p' main()  
    {  
    int a=29;  
    float b=1243.2341;  
    double c=24212345.24232;  
    char c='h'  
    printf("a=%d,],%o,%x\n",a,a,a,a);  
    printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b);  
    printf("c=%lf,%f,%8.4lf\n",c,c,c);  
    printf("d=%c,�\n",d,d);  
    }  
    本例第七行中以四种格式输出整型变量a的值,其中“] ”要求输出宽度为5,而a值为15只有两位故补三个空格。第八行中以四种格式输出实型量b的值。其中“%f”和“%lf ”格式的输出相同,说明“l”符对“f”类型无影响。“%5.4lf”指定输出宽度为5,精度为4,由于实际长度超过5故应该按实际位数输出,小数位数超过4位部分被截去。第九行输出双精度实数,“%8.4lf ”由于指定精度为4位故截去了超过4位的部分。第十行输出字符量d,其中“� ”指定输出宽度为8故在输出字符p之前补加7个空格。  
      
    使用printf函数时还要注意一个问题, 那就是输出表列中的求值顺序。不同的编译系统不一定相同,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。如把例2.13改写如下述形式:  
    void main(){  
    int i=8;  
    printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i--,i++,-i--);  
    } i<--8  
      
    这个程序与例2.13相比只是把多个printf语句改一个printf 语句输出。但从结果可以看出是不同的。为什么结果会不同呢?就是因为printf函数对输出表中各量求值的顺序是自右至左进行的。在式中,先对最后一项“-i--”求值,结果为-8,然后i自减1后为7。再对“-i++”项求值得-7,然后i自增1后为8。再对“i--”项求值得8,然后i再自减1后为7。再求“i++”项得7,然后I再自增1后为8。再求“--i”项,i先自减1后输出,输出值为7。最后才求输出表列中的第一项“++i”,此时i自增1后输出8。但是必须注意,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果是上述输出结果。  
      
    字符输出函数  
      
    putchar 函数  
      
    putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。其一般形式为: putchar(字符变量) 例如:  
    putchar('A'); 输出大写字母A  
    putchar(x); 输出字符变量x的值  
    putchar('\n'); 换行 对控制字符则执行控制功能,不在屏幕上显示。 使用本函数前必须要用文件包含命令:  
    #include<stdio.h>  
    #include <stdio.h>  
    void main(){  
    char a='B',b='o',c='k';  
    putchar(a);putchar(b);putchar(b);putchar(c);putchar('\t');  
    putchar(a);putchar(b);  
    putchar('\n');  
    putchar(b);putchar(c);  
    }  
      
    数据输入语句  
      
    C语言的数据输入也是由函数语句完成的。 本节介绍从标准输入设备—键盘上输入数据的函数scanf和getchar。 scanf函数 scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。  
      
    一、scanf函数的一般形式  
      
    scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为: scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串,也就是不能显示提示字符串。地址表列中给出各变量的地址。地址是由地址运算符“&”后跟变量名组成的。例如,&a,&b分别表示变量a和变量b 的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。变量的地址和变量值的关系如下: &a--->a567 a为变量名,567是变量的值,&a是变量a的地址。在赋值表达式中给变量赋值,如: a=567 在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a。这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。  
    void main(){  
    int a,b,c;  
    printf("input a,b,c\n");  
    scanf("%d%d%d",&a,&b,&c);  
    printf("a=%d,b=%d,c=%d",a,b,c);  
    }  
    注意&的用法!  
    在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。用户输入7、8、9后按下回车键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔,因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。  
    如: 7 8 9  
    或  
    7  
    8  
    9  
      
    格式字符串  
      
    格式字符串的一般形式为: %[*][输入数据宽度][长度]类型 其中有方括号[]的项为任选项。各项的意义如下:  
    1.类型  
    表示输入数据的类型,其格式符和意义下表所示。  
    格式    字符意义  
    d     输入十进制整数  
    o     输入八进制整数  
    x     输入十六进制整数  
    u     输入无符号十进制整数  
    f或e    输入实型数(用小数形式或指数形式)  
    c     输入单个字符  
    s     输入字符串  
    2.“*”符  
    用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。 如 scanf("%d %*d %d",&a,&b);当输入为:1 2 3 时,把1赋予a,2被跳过,3赋予b。  
    3.宽度  
    用十进制整数指定输入的宽度(即字符数)。例如: scanf("]",&a);  
    输入:  
    12345678  
    只把12345赋予变量a,其余部分被截去。又如: scanf("MM",&a,&b);  
    输入:  
    12345678将把1234赋予a,而把5678赋予b。  
    4.长度  
    长度格式符为l和h,l表示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h表示输入短整型数据。  
    使用scanf函数还必须注意以下几点:  
    a. scanf函数中没有精度控制,如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。  
    b. scanf中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。  
    c. 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。  
    d. 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。例如:  
    scanf("%c%c%c",&a,&b,&c);  
    输入为:  
    d e f  
    则把'd'赋予a, 'f'赋予b,'e'赋予c。只有当输入为:  
    def  
    时,才能把'd'赋于a,'e'赋予b,'f'赋予c。 如果在格式控制中加入空格作为间隔,如 scanf ("%c %c %c",&a,&b,&c);则输入时各数据之间可加空格。  
    void main(){  
    char a,b;  
    printf("input character a,b\n");  
    scanf("%c%c",&a,&b);  
    printf("%c%c\n",a,b);  
    }  
    scanf("'C14F14%c%c",&a,&b);  
    printf("%c%c\n",a,b); 由于scanf函数"%c%c"中没有空格,输入M N,结果输出只有M。  
    而输入改为MN时则可输出MN两字符,见下面的输入运行情况: input character a,b  
    MN  
    MN  
    void main(){  
    char a,b;  
    printf("input character a,b\n");  
    scanf("%c %c",&a,&b);  
    printf("\n%c%c\n",a,b);  
    }  
    scanf("%c %c",&a,&b); 本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据之间可以有空格间隔。e. 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。  
    例如:  
    scanf("%d,%d,%d",&a,&b,&c); 其中用非格式符“ , ”作间隔符,故输入时应为: 5,6,7  
    又如: scanf("a=%d,b=%d,c=%d",&a,&b,&c);  
    则输入应为  
    a=5,b=6,c=7g. 如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。  
    void main(){  
    int a;  
    printf("input a number\n");  
    scanf("%d",&a);  
    printf("%ld",a);  
    }  
    由于输入数据类型为整型, 而输出语句的格式串中说明为长整型,因此输出结果和输入数据不符。如改动程序如下:  
    void main(){  
    long a;  
    printf("input a long integer\n");  
    scanf("%ld",&a);  
    printf("%ld",a);  
    }  
    运行结果为:  
    input a long integer  
    1234567890  
    1234567890 当输入数据改为长整型后,输入输出数据相等。  
      
    键盘输入函数  
    getchar函数getchar函数的功能是从键盘上输入一个字符。其一般形式为: getchar(); 通常把输入的字符赋予一个字符变量,构成赋值语句,如:  
    char c;  
    c=getchar();#include<stdio.h>  
    void main(){  
    char c;  
    printf("input a character\n");  
    c=getchar();  
    putchar(c);  
    }  
    使用getchar函数还应注意几个问题:  
    1.getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。  
    2.使用本函数前必须包含文件“stdio.h”。  
    3.在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。  
    void main(){  
    char a,b,c;  
    printf("input character a,b,c\n");  
    scanf("%c %c %c",&a,&b,&c);  
    printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);  
    }  
    输入三个小写字母  
    输出其ASCII码和对应的大写字母。  
    void main(){  
    int a;  
    long b;  
    float f;  
    double d;  
    char c;  
    printf("%d,%d,%d,%d,%d",sizeof(a),sizeof(b),sizeof(f)  
    ,sizeof(d),sizeof(c));  
    }  
    输出各种数据类型的字节长度。  
    </span>  
    
    

    展开全文
  • C语言输入输出格式

    2020-08-22 21:59:29
    C语言输入输出格式符 printf函数(格式输出函数) 1.一般格式 printf(格式控制,输出表列) 例如:printf(“i=%d,ch=%c\n”,i,ch); 说明: (1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两...

    C语言输入输出格式符

    printf函数(格式输出函数)
    1.一般格式

    printf(格式控制,输出表列)

    例如:printf(“i=%d,ch=%c\n”,i,ch);

    说明:

    (1)“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括两种信息:

    ①格式说明:由“%”和格式字符组成,它的作用是将输出的数据转换为指定的格式输出。

    ②普通字符,即需要原样输出的字符。

    (2)“输出表列”是需要输出的一些数据,可以是表达式

    (3)printf函数的一般形式可以表示为

    printf(参数1,参数2,……,参数n)

    功能是将参数2~参数n按参数1给定的格式输出

    2.格式字符(9种)

    (1)d(或i)格式符。用来输出十进制整数,有以下几种用法:

    ①%d,按整型数据的实际长度输出。

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

    ③%ld(%mld 也可),输出长整型数据。

    例如:long a=123456;

    printf("%ld",a);

    (2)o格式符,以八进制数形式输出整数。格式:%o,%mo,%lo,%mlo都可。

    (3)x(或X)格式符,以十六进制数形式输出整数。格式:%x,%mx,%lx,%mlx都可。

    (4)u格式符,用来输出unsigned型数据,即无符号数,以十进制数形式输出。格式:%u,%mu,%lu都可。

    (5)c格式符,用来输出一个字符。格式:%c,%mc都可。

    (6)s格式符,用来输出一个字符串。格式:%s,%ms,%-ms,%m.ns,%-m.ns都可。

    (7)f格式符,用来输出实数(包括单、双精度),以小数形式输出。格式:%f,%m.nf,%-m.nf都可。

    注意:单精度实数的有效位数一般为7位,双精度为16位。

    (8)e(或E)格式符,以指数形式输出实数。格式:%e,%m.ne,%-m.ne都可。

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

    3.说明

    (1)除了X、E、G(用大写字母表示)外,其他格式字符必须用小写字母;

    (2)“格式控制”字符串内可以包含转义字符;

    (3)如果想输出字符“%”,则应该在“格式控制”字符串中用连续两个%表示,如:

    printf("%f%%",1.0/3);

    (4)格式字符表参见下表

    表4.1 printf格式字符

    格式字符 说 明
    d,i 以带符号的十进制形式输出整数(正数不输出符号)
    o 以八进制无符号形式输出整数(不输出前导符0)
    x,X 以十六进制无符号形式输出整数(不输出前导符0x),用x则输出十六进制数的a~f时以小写形式输出,用X时,则以大写字母输出
    u 以无符号十进制形式输出整数
    c 以字符形式输出,只输出一个字符
    s 输出字符串
    f 以小数形式输出单、双精度数,隐含输出6位小数
    e,E 以指数形式输出实数
    g,G 选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0

    表4.2 printf的附加格式说明字符

    字符
    说明

    字母l
    用于长整型整数,可加在格式符d、o、x、u前面

    m(代表一个正整数)
    数据最小宽度

    n(代表一个正整数)
    对实数,表示输出n位小数;对字符串,表示截取的字符个数

    (二)
    c语言不提供输入输出语句,输入输出操作是由c的库函数完成。但要包含头文件stdio.h。
    putchar( ) 向终端输出一个字符 printf( )的格式字符:

    1. ① d格式符 用来输出十进制整数 %d 按整型数据的实际长度输出 %md
      使输出长度为m,如果数据长度小于m,则左补空格,如果大于m,则输出实际长度 %ld 输出长整型数据
    2. ② o格式符 以八进制形式输出整数
    3. ③ x格式符 以十六进制形式输出整数
    4. ④ u格式符 用来输出unsigned型数据,以十进制形式输出
    5. ⑤ c格式符 用来输出一个字符
    6. ⑥ s格式符 输出一个字符串 %s 输出实际长度字符串 %ms 输出的串占m列,如果串长度小于m,左补空格,如果大于m,实际输出
      %-ms输出的串占m列,如果串长度小于m,右补空格, %m.ns 输出占m列,但只取字符串中左端n个字符并靠右对齐 %-m.ns
      m、n含义同上,靠左对齐,如果n>m,则m自动取n值
    7. ⑦ f格式符 以小数形式输出实数 %f 整数部分全部输出,小数部分输出6位 %m.nf
      输出数据共占m列,其中有n位小数。如果数值长度小于m,左补空格 %-m.nf 同上,右补空格
    8. ⑧ e格式符 以指数形式输出实数 %e 系统指定6位小数,5位指数(e+002 )
    9. ⑨ g格式符 输出实数,根据数值大小,自动选f格式或e格式

    3.数据输入 getchar( ) 从终端输入一个字符 scanf( 格式控制,地址列表) 标准C scanf中不使用%u,对于unsigned型数据,以%d或%o或%x输入。%后的*,用来跳过它相应的数据。输入数据时不能规定精度如scanf( “%7.2f”, &a );是不合法的。

    展开全文
  • 在今天的ACM训练中最大收获就是ACM中的一些简洁优美的输入输出个是控制 1、sprintfsprintf(s,"%d%d",numerator,demorator);//以字符串的形式输出到一个内存缓冲区。2、填充控制符printf("%05d / %05d = %d\n", ...

    在今天的ACM训练中最大收获就是ACM中的一些简洁优美的输入输出个是控制
    1、sprintf

    sprintf(s,"%d%d",numerator,demorator);//以字符串的形式输出到一个内存缓冲区。

    2、填充控制符

    printf("%05d / %05d = %d\n", numerator, demorator, N);//5个字宽输出,不足补0
    展开全文
  • c语言的输入函数1、scanf函数scanf函数遵守格式化(format)原则,所谓格式化,是该函数预先给程序员定义了一批输入格式,程序员可以选择其中的某些格式,遵守这些格式,scanf函数就可以按照指定的格式来接收键盘的...

    cb593c9b81e8bcdeaa8345f1babed0b0.png

    c语言的输入函数

    1、scanf函数

    scanf函数遵守格式化(format)原则,所谓格式化,是该函数预先给程序员定义了一批输入格式,程序员可以选择其中的某些格式,遵守这些格式,scanf函数就可以按照指定的格式来接收键盘的输入数据了。

    scanf函数只能在控制台程序中使用,有窗口的界面程序无法通过scanf接收按键。当控制台中出现闪烁的光标时,表示程序在等待用户输入数据。在控制台程序中,一般以回车键代表数据输入完毕,下达命令,指示程序开始工作。scanf函数可以接收多个任意类型的数据,但需严格遵守format格式,否则会出错。

    1)、一般形式:如图

    0707efdfab66cdfbdacf923abc7f541d.png

    功能:要求用户从键盘上输入指定格式的数据。

    说明:如果数据不止一个,应在数据之间用一个或多个空格间隔,也可以用回车键或跳格键tab间隔。

    2)、scanf格式控制

    格式控制格式符说明d用于输入十进制整数

    o用于输入八进制形整数

    x用于输入十六进制整数

    c用于输入一个字符

    s用于输入字符串,并将字符串送到一个字符数组中。输入时以非空白字符开始, 第一个空白字符结束。字符串以串结束标志“\0”作为其最后一个字符。

    f用于输入实数。输入时用小数点形式或指数形式均可。(输入双精度必须用%lf,否则不能正常输入)

    e与f作用相同

    附加格式格式字符说明*表示本输入项在输入后不赋给相应的变量。(不存储)

    l(字母)用于输入长整型和双精度实型数据

    m(一个正整数)用于输入长整型和双精度实型数据

    3)、scanf函数的格式字符串的组成格式符

    和printf函数类似,scanf函数的格式字符串以%开始,以一个格式字符结束,中间可以插入附加字符。格式符告诉了scanf函数该读取什么样的数据。

    空白符

    空白符可以是空格(space,用空格键输入)、制表符(tab,用Tab键输入)和新行符(newline,用回车键输入),或者它们的组合

    非空白符

    除去格式说明符合空白符之外,就是非空白符。非空白符在用户输入的时候,也必须一并输入。非空白符使scanf() 在缓冲区中读一个匹配的字符并将这个字符忽略。例如,”%d,%d”使scanf()先读入一个整数,接着必须要读入一个逗号,读入到逗号后,表示格式匹配,将读入的逗号丢弃,而不像读入的整数存储到某个内存空间。读入逗号后,接着读入另一个整数。如发现不能匹配格式字符串,比如没有读到逗号,scanf()返回,读入失败。

    4)、使用scanf注意事项1)注意变量表列中,应该是变量的地址。变量的地址通过求地址符&得到。所以在写代码时千万不要遗漏&符号。

    2)如果格式字符串中有非空白字符,也就是除了格式控制字符和空白字符之外的字符,则用户在输入的时候一定也要输入这些字符。否则将出现不匹配格式控制字符串的情况。为了使用户正确输入,编程时一定要考虑到用户是否清楚如何输入,最好在需要用户输入前提示如何输入的格式。

    3)在用%c格式符时,空格字符和转义字符都被当作有效字符输入

    4)以回车作为下达开始解析命令。整个输入以回车结束。

    如果输入的数据满足了scanf对需要,则输入结束,如果回车后数据不够,则回车只当作一个空白符。

    5)scanf解析数据,下列情况认为解析出来一个数据:

    读入非字符型数据时,遇到空白字符。有宽度指示时,读入到相应的宽度。如%4d,则只解析4个数字即认为读入这个整数完毕。

    6) 读取双精度double浮点数时,最好使用%lf输入,使用%f可能会导致精度损失甚至读取失败。

    5)、scanf使用示例// 1)可以指定输入的数据所占据的字符个数,scanf函数自动按照指示截取所需长度的数据。如:

    int i,j;

    scanf("%3d%3d",&i,&j); // 输入:1234567↙

    printf("%d,%d",i,j); // 输出 123,456

    // 2)%后面的*格式符,用来表示在解析时,将读入的数据忽略不赋给任何变量。如:

    int i,j;

    scanf("%d %*d %d",&i,&j); // 输入: 123 456 789

    printf("%d,%d",i,j); // 输出: 123,789

    // 3)输入数据时不能指定精度。如:

    float f;

    scanf("%7.2f",&f); // 输入 123.456

    printf("%f23",f); // 输出 0.00000023

    // 4) 输入双精度数使用%lf

    // 输入双精度浮点数时,务必用%lf,如下错误

    double db;

    scanf("%f",&db); //输入: 123.456

    printf("%f",db); // 输出 : 0.000000

    2、getchar函数

    getchar 函数是得到字符输入函数,其功能是得到用户输入的一个字符。getchar函数是一个标准的C语言库函数,它的函数原型在头文件“stdio.h”中。

    getchar函数的一般格式是:char ch;

    ch=getchar();

    用户输入的字符就赋给了ch变量。如:char ch;

    ch=getchar(); // 获取输入的字符

    printf("%c",ch);

    3、gets函数

    gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。此函数在stdio.h头文件中定义的。

    1)、功能

    从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。

    2)、返回值

    读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。

    3)、示例:#include

    void main(void)

    {

    char buf[20]; //不要char*p,然后gets(p),这是错误的,因为p没有指向有效的内存,它可能指向任何非法地址 ,造成非法访问异常

    gets(buf);

    printf("%s\n", buf);

    }

    更多web开发知识,请查阅 HTML中文网 !!

    展开全文
  • c语言格式输入输出

    千次阅读 2011-03-12 15:12:00
    ANSI 标准C C语言 格式输入 输出 格式输入 格式化输出 K&R
  • 字符串格式输入和字符串格式化输出正好相反,字符串格式化输出请参考下面这篇文章,http://www.linuxidc.com/Linux/2014-01/94732.htm#include int scanf(const char *format, …);int fscanf(FILE *stream, co...
  • C语言简单输入格式

    2016-12-31 19:29:16
    【题3.56 】若有以下定义的语句,为使变量c1得到字符’A’,变量c2得到字符’B’,正确的格式输入形式是【A︼ ︼ ︼B︼ ︼ ︼_回车>】.(︼ 表示空格) char c1,c2; scanf(“%4c%4c”,&c1,&c2); 这东西%4c...
  • linux c语言格式输入输出

    千次阅读 2016-07-18 19:14:03
    比如当你想要显示字符串时,你在printf里却用了%d,结果是你看到的是字符串的ascii码,要想看字符串内容,你应该使用%c,今天我们就来讲讲linux c语言格式输入输出的标准,同样我会把初学者经常犯的错误写在前面。...
  • 格式字符用以指定输出项的数据类型和输出格式。 ①d格式:用来输出十进制整数。有以下几种用法: %d:按整型数据的实际长度输出。 %md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m...
  • 以键盘输入十进制数为例,通常其输入格式为: int a; scanf("%d",&a); 注意用&符号,指明变量。 下文详述printf()函数。 在printf()函数中,通常分为2部分,第一部分为格式format,第二部分为数据。在...
  • C语言-格式输入输出

    千次阅读 2019-10-28 11:46:28
    格式说明由“%”和格式字符组成,由%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。 格式字符有d,o,x,u,c,s,f,e,g等 如: %d整型输出,...
  • C语言格式输入输出可以快速转换10进制,8进制和16进制。 例子: 1.C中指定格式输出 printf("%05o\n",35); //按八进制格式输出,保留5位高位补零 printf("%03d\n",35); //按十进制格式输出,保留3位高位补零 ...
  • C语言格式输入函数scanf

    千次阅读 2015-08-04 06:15:58
    scanf是C语言的标准输入输出库stdio中提供的库函数,所以在使用它时,需要使用预处理指令#include 包含stdio.h头文件。scanf的功能是根据由格式化字符串表示的特定格式读取输入输入参数包括格式化字符串和用以存储...
  • c语言输入输出格式的控制

    千次阅读 2014-09-16 14:12:17
    C语言输入格式与输出格式的控制
  • C语言输入一行整数(OJ输入格式)

    千次阅读 2018-11-22 08:39:00
    就是说输入一行用空格隔开的函数,可是它没说用回车符结束,所以一定要用EOF了 第一种方法: int t = 0; char ch; do { scanf("%ld",&a[++t]); } while((ch=getchar())!='\n'&&ch!=EOF); 第...
  • fprintf()函数和fscanf()函数 格式化输出函数——fprintf() ...功能:按“格式串”所描述的格式把输出项写入“文件指针”所指向的文件。执行这个函数时,若成功则返回所写入的字节数;否则返回一个负数。 ...
  • c语言输入输出

    2021-01-11 20:58:05
    目录c语言标准输入输出putchar() -- 输出一个字符getchar() -- 输入一个字符puts() -- 输出一行字符gets() -- 输入一行字符printf() -- 格式化输出scanf() -- 格式输入putc() -- 等同于fputc()getc() -- 等同于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,985
精华内容 4,394
关键字:

c语言输入格式

c语言 订阅