本帖最后由 蓝蓝 于 2015-7-17 04:04 编辑
一、gets():
原型:char *gets(char *s) ;
头文件:#include<stdio.h>
功能:从标准输入设备读进一字符串一直到换行符或者遇到EOF为止,但换行符不被录取,会将换行符替换成‘\0’来表示字符串的结束。
返回值:如果读取成功会返回string指针,如果遇到EOF或者发生错误会返回NULL,当遇到NULL需要调用ferror()和feof()来判断是遇到EOF还是发生了错误。
注:
函 数:ferror 函 数:feof
功 能: 判断调用各种输入输出函数时是否出错 功 能: 检测流上的文件结束符
用 法: int ferror(FILE *stream); 用 法: int feof(file stream);
(注意:该函数读取一直读到遇到换行符为止,所以很容易造成缓存溢出的安全性问题,如果发生溢出,会覆盖堆栈中的内容,改变不相关的变量,导致程序崩溃,可以使用fgets()替换gets(),fgets()会指定大小,如果超出数组大小,会自动根据定义数组长度截断。)
例:
#include <stdio.h> \\这个头文件包含gets()函数
int main()
{
char str[10];
gets(str);
if(gets(str)!=NULL){
printf("%s\n", str);
}else{
printf("字符串读取失败."); }
return 0;
}
此时就可以从键盘上读取一个字符串到str中
注意:scanf("%s", str) ;这样也可以输入字符串,如果遇到空格符就会认为字符串结束了,空格后的字符作为下一个字符串,但gets()会遇到换行符为止
二、getchar():
函数原型:int getchar(void);
头文件:#include<stdio.h>
功能:从标准输入中读取字符,等待用户输入字符串一直到换行符为止,用户输入的字符将会存入键盘缓冲区中包括换行符,他会读取第一个字符,返回第一个字符的ASCII码,getchar()会从缓冲区中读取剩下的字符一直到读完为止,然后等待输入换行符.
getch()和getchar()的区别:getch()的头文件是conio.h。 getch()的作用是从键盘接收一个字符,且不带回显(就是说,你按了一个键后它并不在屏幕上显示你按的什么)而继续运行后面的代码,所以它常用来实现“按任意键继续”的效果.
#include <stido.h>
int main()
{
char c;
while((c = getchar()) != '\n') \\每个getchar()依次读入一个字符,遇到回车后结束
{
printf("%c", c) ; \\按照原样输出字符
}
return 0 ;
}
三、fgets():
函数原型:char *fgets(char *buf, int bufsize, file *stream);
\\ buf用来存储所得数据的地址
\\ bufsize存储数据的大小
\\ stream要读取的文件流
头文件:#include<stdio.h>
功能:从指定的文件中读一个字符串到字符数组中.
返回值:成功将返回buf,失败或读到文件结尾返回NULL.
调用形式:fgets(字符数组名,n,文件指针);(注:n为一个正整数,表示从文件中读出的字符串不超过n-1个字符,在读入的最后一个字符后加上结束标志'\0'。)
例:如果一个文件夹的当前位置的文本如下:
What are you doing
用fgets(str,5,file1);去读取
执行后str=“What”,读取的是5-1个字符
注意:1.在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束.
2.fgets函数也有返回值,其返回值是字符数组的首地址.
|
|