1. 程式人生 > >【C語言天天練(十八)】字元/字串輸入函式fgetc、fgets、getc、getchar和gets

【C語言天天練(十八)】字元/字串輸入函式fgetc、fgets、getc、getchar和gets

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

}