gets()函数
gets()函数用于读取一个字符串,其函数声明如下:
char *gets(char *str);
gets()函数用来读取用户输入到输入缓冲区中的字符串,并将字符串存储到字符串指针变量str所指向的内存空间。gets()函数只有在遇到换行符(回车键)时停止输入,将换行符之前的所有字符串输入到存储空间,并在末尾添加字符‘\0’。
用户输入数据时以换行表示输入结束,gets()函数读取换行符之前的所有字符(不包括换行符本身),并在字符串的末尾添加一个空字符‘\0’用来标记字符串的结束,读取到的字符串会以指针形式返回。gets()函数的使用示例如下:
char phoneNumber[12]; //定义一个字符数组
gets(phoneNumber); //读取数据存入到数组中
在上述代码中,首先定义了一个字符数组phoneNumber,然后调用gets()函数读取数据,将读取到的数据存储到数组phoneNumber中。gets()函数用法如例1所示。
例1 inputStr.c
1 #include <stdio.h>
2 int main()
3 {
4 char str[8] ;
5 gets(str);
6 printf("%s", str);
7 return 0;
8 }
例1中的第5行代码测试gets()函数将字符输入到数组str。验证了输入字符串长度等于字符串数组后会出现栈错误,程序直接退出。因此,在使用gets( )函数时一定要注意不能将输入与存储空间长度相等或超过存储空间长度的字符串,这样做是不安全的。应当保留字符结束标志位‘\0’的位置确保程序正常运行。
例1运行结果如图1所示。
图1 例1运行结果
多学一招:单个字符输入函数
1、getc()函数用来读取用户输入的单个字符,函数原型如下:
int getc(FILE *stream);
getc()函数接收一个文件指针作为参数,它可以从该文件指针中读取一个字符,将字符强制转换为int类型返回,当读取到末尾或发生错误时返回EOF(-1)。
使用getc()函数从键盘输入中读取一个字符,示例代码如下:
int num = getc(stdin);
在上述代码中,使用getc()函数从标准输入(键盘)中读取一个字符,将其结果返回给整型变量num,假如输入一个字符a,则输出num的值为97,这是字符a对应的ASCII码值。需要注意的是,getc()函数的参数stdin是C语言定义的标准输入流,是一个文件指针,关于文件指针与流将在第11章进行讲解。
2、getchar()函数用于从标准输入中读取一个字符,函数原型如下:
int getchar(void);
getchar()没有参数,可直接使用,其返回值为读取到的字符,示例代码如下:
int num = getchar();
上述代码表示使用getchar()函数从标准输入中读取一个字符,将读取的字符返回给num,它的作用与“int num = getc(stdin);”相同。