【C語言天天練(十八)】字元/字串輸入函式fgetc、fgets、getc、getchar和gets
阿新 • • 發佈:2019-01-09
#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; }