(十八)字符/字符串输入函数fgetc、fgets、getc、getchar和gets

最后更新于:2022-04-01 20:18:06

~~~ #include 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 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; } ~~~
';