输入输出函数_1

      本篇主要是说一下输入输出函数,对于学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 5

int 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 10

int 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 10

int 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下运行通过】

(如有错误,敬请指正)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值