~~~
#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變量
- (二四)內存分配