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]#