~~~
#include <stdio.h>
intfgetc(FILE *stream);
char *fgets(char *s, int size, FILE *stream);
int getc(FILE *stream);
int getchar(void);
char *gets(char *s);
~~~
fgetc()读取文件指针stream所指向文件的下一个字符,返回值是所读取字符强制类型转换成整数的值,如果到达文件尾部或者出错,则返回EOF。
getc()与fgetc()函数相同,只是它是一个宏实现。
getchar()等同于getc(stdin)。
gets()从标准输入读取一行到字符串指针s所指向的缓冲区,直到行结束或遇到一个EOF,然后用'\0'替代它。注意:该函数不检查缓冲区是否够大,是否有溢出。
fgets()从文件指针stream所指向的文件中,最多取出size个字符存放到s所指向的换中去中。遇到EOF或一行结束时,读取停止。如果读取一行,它将该行存放到缓冲区,在最后一个字符的后边添加'\0'并放到缓冲区。
返回值:
fgetc(), getc() 和getchar()成功时返回读取字符的ASCII码值,失败时返回EOF。
gets() 和fgets() 成功时返回字符串的指针s,失败时返回NULL指针。
~~~
#include <stdio.h>
int
main(int argc, char **argv)
{
int tmp;
FILE *fp;
char ptr[10];
char *p;
fp = fopen("/work/tmp/c/txt", "r");
if(fp == NULL){
printf("open txt fail\n");
return -1;
}
/*fgetc function test*/
if((tmp = fgetc(fp)) != EOF){
printf("tmp = %d, the character we get is %c\n", tmp, (char)tmp);
}
/*fgets function test*/
if((p = fgets(ptr, 5, fp)) != NULL){
printf("the string we get is %s\n", ptr);
}
/*getc function test*/
if((tmp = getc(fp)) != EOF){
printf("tmp = %d, the character we get is %c\n", tmp, (char)tmp);
}
/*getchar function test*/
if((tmp = getchar()) != EOF){
printf("tmp = %d, the characeter we get is %c\n", tmp, (char)tmp);
}
return 0;
}
~~~
- 前言
- (四)回调函数
- (一)while(1)死循环与for(;;)死循环的区别
- (二)static关键字
- (三)函数
- (四)可变参数函数
- (五)setjmp和longjmp
- (六)指针
- (七)回调函数
- (八)字符串
- (九)动态内存分配
- (十)结构体
- (十一)深入理解指针
- (十二)命令行参数
- (十三)printf、fprintf、sprintf和snprintf函数
- (十四)const关键字详解
- (十五)字符串输入函数fgets、gets和scanf
- (十六)字符串输出函数puts、fputs和printf
- (十七)字符/字符串输出函数fputc、fputs、putc、putchar和puts
- (十八)字符/字符串输入函数fgetc、fgets、getc、getchar和gets
- (十九)restrict关键词
- (二十)scanf函数详解
- (二一)内联函数
- (二二)位操作
- (二三)errno变量
- (二四)内存分配