输入输出函数_1

来源:互联网 发布:淘宝hd降级 编辑:程序博客网 时间:2024/06/06 01:45
      本篇主要是说一下输入输出函数,对于学C的新手而言,最常用的无非是printf(输出)、scanf(输入)这两个函数,但实际上,还有一些其它的函数,下面会举一些例子说明。

perror函数

其原型为void perror(char const *) ,该原型定义在stdio.h中(const与函数类型调换顺序其效果相同)。

关于其作用,下面举例说明

例1:

# include <stdio.h>int main(void) {perror("aaa"); FILE *fp ;        fp = fopen( "a.txt", "r+" );if ( NULL == fp ) {perror("a.txt");  }  return 0;}
a.txt文件存在时,输出结果为:


a.txt文件不存在是,输出结果为:


即显示没有这个文件或目录

由上结果,给出这个函数的用法:

如果message不是NULL并且指向一个非空的字符串,perror函数就打印出这个字符串并且在其后打印出: No error

如果有误,比如像上面的情况,当a.txt文件存在时,没有结果输出,当它不存在时,输出字符串并在其后加上一个冒号和一个空格,并给出错误的原因

exit函数

其原型为void exit (int status),该原型定义在stdlib.h中。

2

# include <stdio.h># include <stdlib.h>int main(void) {int t;printf("请输入一个数字:\n");scanf("%d", &t);switch(t) {case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:printf("输入的是数字!\n");break;default :printf("输入的不是数字!\n");exit(0); }printf("污染很严重!\n");  return 0;}
输出结果

如果输入的是数字,则:


如果输入的不是数字,则:


由结果可以发现,如果输入不是数字,则执行exit函数后,程序直接结束,下面的printf语句不会执行,exit函数的作用为一被执行就退出程序。


 对于C语言而言,所有的I/O操作只是简单的移进或移除字节的事情,这种字节流便被称为流。

  绝大多数的流都是完全缓冲的,即“读”和“写”实际上是在缓冲区来回的复制数据

fflush函数

其函数原型为int fflush(FILE * stream); ,定义在stdio.h中。

如果给出的文件流是一个输出流,那么fflush()把输出到缓冲区的内容写入文件. 如果给出的文件流是输入类型的,那么fflush()会清除输入缓冲区。

getchar函数

其原型为int getchar(void); ,存在于stdio.h

3

# include <stdio.h>int main(void) {char c;c = getchar();printf("%c\n", c);int i, j;char ch;scanf("%d",&i);printf("i = %d\n",i);while ( (ch=getchar()) != '\n')//把用户前边的非法输入消除       continue;                 scanf("%d",&j);printf("j = %d\n",j);return 0;}
示例输出结果为:


由上结果可知,getchar的基本用法是输入单个字符,另外,也可以用作消除非法输入,如上将数字后面的字母等非数字消除,还可以用作暂停功能等

putchar函数

其原型为int putchar(int ch); ,存在于stdio.h中。

4

# include <stdio.h># define N 5int main(void) {char c[N];printf("请输入%d个字符:", N);for (int i=0; i<N; i++) {c[i] = getchar();}for (int i=0; i<N; i++) {putchar(c[i]);}printf("\n");return 0;}
输出结果为:


由上结果可知,putchar的用法为输出单个字符

gets函数

其原型为char * gets(char * str); ,存在于stdio.h中。

puts函数

其原型为int put(char * str); ,存在于stdio.h

5

# include <stdio.h># define N 10int main(void) {char c[N];gets(c);puts(c);return 0;}

示例输出结果为:


由上可知,这两个函数分别是输入字符串和输出字符串。另外,gets()的返回值是读入的字符串,如果错误返回NULL,puts() 成功时返回非负值, 失败时返回EOF

putc函数

其原型为int putc( int ch, FILE *stream ); ,存在于stdio.h中。

getc函数

其原型为int getc( FILE *stream ); ,存在于stdio.h

putc()函数把字符ch写到stream(流)中. 返回值是写入的字符, 发生错误时返回EOF。

getc()函数从stream(流)获取并返回下一个字符,如果到达文件尾返回EOF。

6

# include <stdio.h># define N 10int main(void) {    char ch;    FILE * f;    f = fopen( "未命名1.cpp", "r" );    ch = getc(f);    while( ch != EOF ) {      printf("%c", ch);      ch = getc(f);    }    return 0;}
输出结果为:



【所有代码均在windows系统下c-free下运行通过】

(如有错误,敬请指正)

0 0