Linux程序设计(12)第三章:标准I/O库(4) fgetc getc getchar fgets 和 fputc putc putchar fputs

Linux程序设计(12)第三章:标准I/O库(4) fgetc getc getchar fgets 和 fputc putc putchar fputs

1. fgetc getc getchar

int fgetc(FILE *stream);
int getc(FILE *stream);
int getchar();
char *fgets(char *str, int n, FILE *stream)

fgetc 函数从文件流里取出下一个字节并把它作为一个字符返回。
	当它到达文件尾或出现错误时,它返回EOF。

getc 函数的作用和fgetc 一样,但它有可能被实现为一个宏。

getchar 函数的作用相当于getc(stdin),它从标准输入里读取下一个字符。

fgets 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。
	当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

例子:

#include<stdio.h>
#include<stdlib.h>

int main()
{
		char cTmp;
		char str[1024]={0};
		FILE *fp = fopen("file.in2","r");

		for(;0 == feof(fp);)
		{
			//cTmp = (char)fgetc(fp);
			cTmp = (char)getc(fp);
			if('\n' == cTmp)
			{
				break;
			}
			printf("%c\n",cTmp);
		}
		
		int res = getchar();
		printf("%c\n",res);
		
		fseek(fp, 0, SEEK_SET);
		/* feof 文件结束:返回非0值;文件未结束:返回0值 */
		while(0 == feof(fp)) 
		{
			if( fgets (str, 1024, fp)!=NULL ) {
				/* 向标准输出 stdout 写入内容 */
				puts(str);  //puts 自带换行
				//printf("%s",str);
			}
		}
		
		fclose(fp);
	
		exit(0);
}

结果:

/*
	file.in2 内容
	abcde
	123
	456
*/
[root@localhost linux-chegnxusheji]# ./a.out 
a
b
c
d
e
g
g
abcde

123

456

[root@localhost linux-chegnxusheji]# 

2. fputc putc putchar fputs

#include <stdio.h>
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar(int c);
int fputs(const char *str, FILE *stream)

fputc 函数把一个字符写到一个输出文件流中。它返回写入的值,如果失败,则返回 eof。
类似于fgetc和getc之间的关系,putc函数的作用也相当于fputc,但它可能被实现为一个宏。

putchar 函数相当于putc(c ,stidout),它把单个字符写到标准输出。
fputs 把字符串写入到指定的流 stream 中,但不包括空字符。

例子:

#include<stdio.h>
#include<stdlib.h>

int main()
{
		char cTmp;
		FILE *fp = fopen("file.in2","r+"); /* abcde */

				fputs("111\n",fp);
				fputc('t',fp);
				fputc('s',fp);
				putchar('p');
				putchar('\n');

		exit(0);
}

结果:

[root@localhost linux-chegnxusheji]# ./a.out 
p
[root@localhost linux-chegnxusheji]# cat file.in2
111
ts12345
[root@localhost linux-chegnxusheji]#

おすすめ

転載: blog.csdn.net/lqy971966/article/details/120672031