c语言gets,getc,区分C语言中fgetc、getc、getchar、fgets、gets

int fgetc ( FILE *stream );  //从流stream中读一个字符。可以将标准输入stdin作为它的实参,这时候从标准输入读取一个字符。

int getc(FILE *stream);      //和fgetc等效,由fgetc通过宏实现。

int getchar ( void );            //从标准输入stdin读入一个字符,程序等待你输入的时候,你可以输入多个字符,回车后程序继续执行。

说明:

getc、getchar都是通过宏定义借助fgetc实现。如getchar的实现为,#define getchar() fgetc(stdin)。

char *fgets (char *str, int num, FILE *stream);   //从流stream中读入最多num个字符到字符数组str中,当遇到换行符时、或读到num-1个字符时停止。 自动加上'\0'空字符结尾

char *gets ( char *str );   //从标准输入stdin读取一个字符串,遇到换行或结束时候终止。不同于fgets,他没有指定num,所以需要注意字符数组str的大小。

说明: fgets和gets之间没有宏定义的关系,彼此各自有自己的实现。蠕虫病毒的实现就是函数gets的“功劳”。gets函数的任务是从流中读入一个字符串。它的调用者会告诉它把读入的字符串放在什么地方。但是,gets()函数并不检查缓冲区大小,如果调用者提供了一个指向堆栈的指针,并且get()函数读入的字符数量超过了超过了缓冲区的空间大小,get()会愉快地将多出来的字符继续写入到堆栈中,这就覆盖了堆栈中原来的内容。如:

void main()

{

你可能感兴趣的:(c语言gets,getc)