getc ()-getchar ()- 读取字符

格式

#include <stdio.h>
int getc(FILE *stream);
int getchar(void);

语言级别

ANSI

线程安全

False

#undef getc#undef getchar 允许调用 getcgetchar 函数,而不是调用这些函数的宏版本。 这些函数是线程安全的。

描述

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 );
}

相关信息