A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 蓝蓝 中级黑马   /  2015-7-17 04:00  /  859 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 蓝蓝 于 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函数也有返回值,其返回值是字符数组的首地址.

1 个回复

倒序浏览
楼主你这个是C语言么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马