C语言基础教程三输入输出函数及控制流程语句.docx

上传人:b****3 文档编号:6251636 上传时间:2023-05-09 格式:DOCX 页数:21 大小:33.30KB
下载 相关 举报
C语言基础教程三输入输出函数及控制流程语句.docx_第1页
第1页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第2页
第2页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第3页
第3页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第4页
第4页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第5页
第5页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第6页
第6页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第7页
第7页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第8页
第8页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第9页
第9页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第10页
第10页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第11页
第11页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第12页
第12页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第13页
第13页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第14页
第14页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第15页
第15页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第16页
第16页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第17页
第17页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第18页
第18页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第19页
第19页 / 共21页
C语言基础教程三输入输出函数及控制流程语句.docx_第20页
第20页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言基础教程三输入输出函数及控制流程语句.docx

《C语言基础教程三输入输出函数及控制流程语句.docx》由会员分享,可在线阅读,更多相关《C语言基础教程三输入输出函数及控制流程语句.docx(21页珍藏版)》请在冰点文库上搜索。

C语言基础教程三输入输出函数及控制流程语句.docx

C语言基础教程三输入输出函数及控制流程语句

本节主要介绍TurboC2.0标准输入输出函数和文件的输入输出函数。

通过本

节的学习可以使读者掌握TurboC2.0的屏幕输出、键盘输入输出以及磁盘文件的

读写函数,并能开始进行一些简单的程序的编写。

   控制流程语句主要包括:

条件语句、循环语句和开关语句。

 

 

1.1 标准输入输出函数 

   1.1.1格式化输入输出函数

   TurboC2.0标准库提供了两个控制台格式化输入、输出函数printf()和

scanf(),这两个函数可以在标准输入输出设备上以各种不同的格式读写数据。

printf()函数用来向标准输出设备(屏幕)写数据;scanf()函数用来从标准输入

设备(键盘)上读数据。

下面详细介绍这两个函数的用法。

   一、printf()函数

   printf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出

信息。

在编写程序时经常会用到此函数。

printf()函数的调用格式为:

     printf("<格式化字符串>",<参量表>);

   其中格式化字符串包括两部分内容:

一部分是正常字符, 这些字符将按原

样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,

用来确定输出内容格式。

   参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出

参数个数一样多,各参数之间用","分开,且顺序一一对应, 否则将会出现意想

不到的错误。

 1.格式化规定符

   TurboC2.0提供的格式化规定符如下:

━━━━━━━━━━━━━━━━━━━━━━━━━━

  符号                 作用

──────────────────────────

   %d             十进制有符号整数

   %u             十进制无符号整数

   %f             浮点数

   %s             字符串

   %c             单个字符

   %p             指针的值

   %e             指数形式的浮点数

   %x,%X         无符号以十六进制表示的整数

   %0             无符号以八进制表示的整数

   %g             自动选择合适的表示法

━━━━━━━━━━━━━━━━━━━━━━━━━━

   说明:

   

(1).可以在"%"和字母之间插进数字表示最大场宽。

    例如:

 %3d  表示输出3位整型数,不够3位右对齐。

           %9.2f表示输出场宽为9的浮点数,其中小数位为2,整数位为6,

                 小数点占一位,不够9位右对齐。

           %8s  表示输出8个字符的字符串,不够8个字符右对齐。

   如果字符串的长度、或整型数位数超过说明的场宽,将按其实际长度输出。

但对浮点数,若整数部分位数超过了说明的整数位宽度,将按实际整数位输出;

若小数部分位数超过了说明的小数位宽度,则按说明的宽度以四舍五入输出。

   另外,若想在输出值前加一些0,就应在场宽项前加个0。

   例如:

  %04d 表示在输出一个小于4位的数值时,将在前面补0使其总宽度

为4位。

   如果用浮点数表示字符或整型量的输出格式,小数点后的数字代表最大宽度,

小数点前的数字代表最小宽度。

   例如:

%6.9s表示显示一个长度不小于6且不大于9的字符串。

若大于9, 则

第9个字符以后的内容将被删除。

   

(2).可以在"%"和字母之间加小写字母l,表示输出的是长型数。

   例如:

  %ld  表示输出long整数

           %lf  表示输出double浮点数

   (3).可以控制输出左对齐或右对齐,即在"%"和字母之间加入一个"-"号可

说明输出为左对齐,否则为右对齐。

   例如:

  %-7d 表示输出7位整数左对齐

           %-10s表示输出10个字符左对齐

2.一些特殊规定字符

━━━━━━━━━━━━━━━━━━━━━━━━━━

   字符                          作用

──────────────────────────

    \n                  换行

    \f                  清屏并换页

    \r                  回车

    \t                  Tab符

    \xhh                表示一个ASCII码用16进表示,

                         其中hh是1到2个16进制数

━━━━━━━━━━━━━━━━━━━━━━━━━━

   由本节所学的printf()函数,并结合上一节学习的数据类型,编制下面的程

序,以加深对TurboC2.0数据类型的了解。

   例1

    #include

    #include

    intmain()

    {

         charc,s[20],*p;

         inta=1234,*i;

         floatf=3.141592653589;

         doublex=0.12345678987654321;

         p="Howdoyoudo";

         strcpy(s,"Hello,Comrade");

         *i=12;

         c='\x41';

         printf("a=%d\n",a);    /*结果输出十进制整数a=1234*/

         printf("a=%6d\n",a);   /*结果输出6位十进制数a= 1234*/

         printf("a=%06d\n",a);  /*结果输出6位十进制数a=001234*/

         printf("a=%2d\n",a);   /*a超过2位,按实际值输出a=1234*/

         printf("*i=%4d\n",*i); /*输出4位十进制整数*i= 12*/

         printf("*i=%-4d\n",*i);/*输出左对齐4位十进制整数*i=12*/

         printf("i=%p\n",i);    /*输出地址i=06E4*/

         printf("f=%f\n",f);    /*输出浮点数f=3.141593*/

         printf("f=6.4f\n",f);  /*输出6位其中小数点后4位的浮点数

                                     f=3.1416*/

         printf("x=%lf\n",x);   /*输出长浮点数x=0.123457*/

         printf("x=%18.16lf\n",x);/*输出18位其中小数点后16位的长浮点

                                     数x=0.1234567898765432*/

         printf("c=%c\n",c);    /*输出字符c=A*/

         printf("c=%x\n",c);    /*输出字符的ASCII码值c=41*/

         printf("s[]=%s\n",s);  /*输出数组字符串s[]=Hello,Comrade*/

         printf("s[]=%6.9s\n",s);/*输出最多9个字符的字符串s[]=Hello,

                                    Co*/

         printf("s=%p\n",s);    /*输出数组字符串首字符地址s=FFBE*/

         printf("*p=%s\n",p);   /*输出指针字符串p=Howdoyoudo*/

         printf("p=%p\n",p);    /*输出指针的值p=0194*/

         getch();

         retunr0;

    }

   上面结果中的地址值在不同计算机上可能不同。

   例1.中第一条语句#include的含义是调用另一个文件stdio.h,这

是一个头文件,其中包括全部标准输入输出库函数的数据类型定义和函数说明。

TurboC2.0对每个库函数便用的变量及函数类型都已作了定义与说明,放在相应

头文件"*.h"中,用户用到这些函数时必须要用#include<*.h>或#include"*.h"

语句调用相应的头文件,以供连接。

若没有用此语句说明,则连接时将会出现错

误。

 二、scanf()函数

   scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息。

其调用格式为:

     scanf("<格式化字符串>",<地址表>);

   格式化字符串包括以下三类不同的字符;

   1.格式化说明符:

格式化说明符与printf()函数中的格式说明符基本相同。

   2.空白字符:

空白字符会使scanf()函数在读操作中略去输入中的一个或多

个空白字符。

   3.非空白字符:

一个非空白字符会使scanf()函数在读入时剔除掉与这个非

空白字符相同的字符。

   地址表是需要读入的所有变量的地址,而不是变量本身。

这与printf()函数

完全不同,要特别注意。

各个变量的地址之间同","分开。

   例2:

    main()

    {

         inti,j;

         printf("i,j=?

\n");

         scanf("%d,%d",&i,&j);

    }

   上例中的scanf()函数先读一个整型数,然后把接着输入的逗号剔除掉, 最

后读入另一个整型数。

如果","这一特定字符没有找到,scanf()函数就终止。

参数之间的分隔符为空格,则参数之间必须输入一个或多个空格。

   说明:

   

(1).对于字符串数组或字符串指针变量, 由于数组名和指针变量名本身就

是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。

   例3

     mian()

    {

         char*p,str[20];

         scanf("%s",p);         /*从健盘输入字符串*/

         scanf("%s",str);

         printf("%s\n",p);      /*向屏幕输出字符串*/

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

    }

   

(2).可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示

任何读操作中的最大位数。

   如例3中若规定只能输入10字符给字符串指针p,则第一条scanf()函数语句

变为

         scanf("%10s",p);

   程序运行时一旦输入字符个数大于10, p就不再继续读入,而后面的一个读

入函数即scanf("%s",str)就会从第11个字符开始读入。

   实际使用scanf()函数时存在一个问题,下面举例进行说明:

   当使用多个scanf()函数连续给多个字符变量输入时,例如:

    main()

    {

         charc1,c2;

         scanf("%c",&c1);

         scanf("%c",&c2);

         printf("c1is%c,c2is%c",c2\1,c2);

    }

   运行该程序,输入一个字符A后回车(要完成输入必须回车),在执行scanf

("%c",&c1)时,给变量c1赋值"A",但回车符仍然留在缓冲区内,执行输入语句

scanf("%c",&c2)时,变量c2输出的是一空行,如果输入AB后回车,那么输出结

果为:

c1isA,c2isB。

   要解决以上问题,可以在输入函数前加入清除函数fflush()(这个函数的使

用方法将在本节最后讲述)。

修改以上程序变成:

    #include

    main()

    {

         charc1,c2;

         scanf("%c",&c1);

         fflush(stdin);

         scanf("%c",&c2);

         printf("c1is%c,c2is%c",c1,c2);

    }

 1.1.2非格式化输入输出函数

   非格式化输入输出函数可以由上面讲述的标准格式化输入输出函数代替,但

这些函数编译后代码少,相对占用内存也小,从而提高了速度,同时使用也比较

方便。

下面分别进行介绍。

   一、puts()和gets()函数

   1.puts()函数

   puts()函数用来向标准输出设备(屏幕)写字符串并换行,其调用格式为:

    puts(s);

   其中s为字符串变量(字符串数组名或字符串指针)。

   puts()函数的作用与语printf("%s\n",s)相同。

   例4:

    main()

    {

         chars[20],*f;                /*定义字符串数组和指针变量*/

         strcpy(s,"Hello!

TurboC2.0");/*字符串数组变量赋值*/

         f="Thankyou";                 /*字符串指针变量赋值*/

         puts(s);

         puts(f);

    }

   说明:

   

(1).puts()函数只能输出字符串,不能输出数值或进行格式变换。

   

(2).可以将字符串直接写入puts()函数中。

如:

         puts("Hello,TurboC2.0");

   2.gets()函数

   gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束,但回车符

不属于这个字符串。

其调用格式为:

   gets(s);

   其中s为字符串变量(字符串数组名或字符串指针)。

   gets(s)函数与scanf("%s",&s)相似,但不完全相同,使用scanf("%s",&s)

函数输入字符串时存在一个问题,就是如果输入了空格会认为输入字符串结束,

空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符

串直到回车为止。

   例5

    main()

    {

         chars[20],*f;

         printf("What'syourname?

\n");

         gets(s);                     /*等待输入字符串直到回车结束*/

         puts(s);                     /*将输入的字符串输出*/

         puts("Howoldareyou?

");

         gets(f);

         puts(f);

    }

   说明:

   

(1).gets(s)函数中的变量s为一字符串。

如果为单个字符, 编译连接不会

有错误,但运行后会出现"Nullpointerasignmemt"的错误。

二、putchar()、getch()、getche()和getchar()函数

   1.putchar()函数

   putchar()函数是向标准输出设备输出一个字符,其调用格式为:

    putchar(ch);

   其中ch为一个字符变量或常量。

   putchar()函数的作用等同于printf("%c",ch);

   例6:

    #include

    main()

    {

         charc:

            /*定义字符变量*/

         c='B';             /*给字符变量赋值*/

         putchar(c);        /*输出该字符*/

         putchar('\x42');   /*输出字母B*/

         putchar(0x42);     /*直接用ASCII码值输出字母B*/

    }

   从本例中的连续四个字符输出函数语句可以分清字符变量的不同赋值方法。

   2.getch()、getche()和getchar()函数

   

(1)getch()和getche()函数

   这两个函数都是从键盘上读入一个字符。

其调用格式为:

    getch();

    getche();

   两者的区别是:

getch()函数不将读入的字符回显在显示屏幕上,而getche()

函数却将读入的字符回显到显示屏幕上。

   例7:

    #include

    main()

    {

         charc,ch;

         c=getch();    /*从键盘上读入一个字符不回显送给字符变量c*/

         putchar(c);   /*输出该字符*/

         ch=getche();  /*从键盘上带回显的读入一个字符送给字符变量ch*/

         putchar(ch);

    }

   利用回显和不回显的特点,这两个函数经常用于交互输入的过程中完成暂停

等功能。

   例8:

    #include

    main()

    {

         charc,s[20];

         printf("Name:

");

         gets(s);

         printf("Pressanykeytoconfinue...");

         getch(); /*等待输入任一键*/

    }

 

   

(2)getchar()函数

   getchar()函数也是从键盘上读入一个字符,并带回显。

它与前面两个函数

的区别在于:

getchar()函数等待输入直到按回车才结束, 回车前的所有输入字

符都会逐个显示在屏幕上。

但只有第一个字符作为函数的返回值。

   getchar()函数的调用格式为:

    getchar();

   例9:

    #include

    main()

    {

         charc;

         c=getchar();  /*从键盘读入字符直到回车结束*/

         putchar(c);   /*显示输入的第一个字符*/

         getch();      /*等待按任一健*/

    }

1.2文件的输入输出函数

 

   键盘、显示器、打印机、磁盘驱动器等逻辑设备,其输入输出都可以通过文

件管理的方法来完成。

而在编程时使用最多的要算是磁盘文件,因此本节主要以

磁盘文件为主,详细介绍TurboC2.0提供的文件操作函数,当然这些对文件的操

作函数也适合于非磁盘文件的情况。

   另外,TurboC2.0提供了两类关于文件的函数。

一类称做标准文件函数也称

缓冲型文件函数,这是ANSI标准定义的函数;另一类叫非标准文件函数,也称非

缓冲型文件函数。

这类函数最早公用于UNIX操作系统,但现在MS-DOS3.0以上版

本的操作系统也可以使用。

下面分别进行介绍。

 

   1.2.1 标准文件函数

   标准文件函数主要包括文件的打开、关闭、读和写等函数。

不象BASIC、

FORTRAN语方有顺序文件和随机文件之分,  在打开时就应按不同的方式确定。

TurboC2.0并不区分这两种文件,但提供了两组函数,即顺序读写函数和随机读

写函数。

   一、文件的打开和关闭

   任何一个文件在使用之前和使用之后,必须要进行打开和关闭,这是因为操

作系统对于同时打开的文件数目是有限制的,DOS操作系统中,   可以在DEVICE

.SYS中定义允许同时打开的文件数n(用files=n定义)。

其中n为可同时打开的文

件数,一般n<=20。

因此在使用文件前应打开文件,才可对其中的信息进行存取。

用完之后需要关闭,否则将会出现一些意想不到的错误。

TurboC2.0提供了打开

和关闭文件的函数。

1.fopen()函数

   fopen函数用于打开文件,其调用格式为:

    FILE*fopen(char*filename,*type);

   在介绍这个函数之;前,先了解一下下面

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2