getc ()-getchar ()- 读取字符
格式
#include <stdio.h>
int getc(FILE *stream);
int getchar(void);语言级别
ANSI
线程安全
False
#undef getc 或 #undef getchar 允许调用 getc 或 getchar 函数,而不是调用这些函数的宏版本。 这些函数是线程安全的。描述
getc() 函数从当前 流 位置读取单个字符,并将 流 位置前进到下一个字符。 getchar() 函数与 getc(stdin)相同。
getc() 和 fgetc() 函数之间的区别在于可以实现 getc() ,以便可以多次对其自变量进行求值。 因此, getc() 的 stream 自变量不应是具有副作用的表达式。
返回值
getc() 和 getchar() 函数返回读取的字符。 返回值 EOF 指示错误或文件结束条件。 使用 ferror() 或 feof() 来确定是发生了错误还是发生了文件结束情况。
errno 的值可以设置为:
- 值
- 含义
- EBADF
- 文件指针或描述符无效。
- ECONVERT
- 发生转换错误。
- EGETANDPUT
- 写操作后发生非法读操作。
- EIOERROR
- 发生了不可恢复的I/O错误。
- EIORECERR
- 发生了可恢复的I/O错误。
getc() 和 getchar() 函数在记录方式下不受支持。
示例
此示例从
stdin 流获取一行输入。 您还可以在 for 语句中使用 getc(stdin) 而不是 getchar() 来获取来自 stdin的输入行。#include <stdio.h>
#define LINE 80
int main(void)
{
char buffer[LINE+1];
int i;
int ch;
printf( "Please enter string\n" );
/* Keep reading until either:
1. the length of LINE is exceeded or
2. the input character is EOF or
3. the input character is a new-line character
*/
for ( i = 0; ( i < LINE ) && (( ch = getchar()) != EOF) &&
( ch !='\n' ); ++i )
buffer[i] = ch;
buffer[i] = '\0'; /* a string should always end with '\0' ! */
printf( "The string is %s\n", buffer );
}