C语言gets函数
# include <stdio.h>
char *gets(char *str);
这个函数很简单,只有一个参数。参数类型为 char* 型,即 str 可以是一个字符指针变量名,也可以是一个字符数组名。
下面将前面中使用 scanf 输入字符串的程序改一下:
# include <stdio.h>
int main(void){char str[20] = "\0"; //字符数组初始化\0
printf("请输入字符串:");
gets(str);
printf("%s\n", str);
return 0;}
输出结果是:
请输入字符串:i love you
i love you
gets(str);
完全可以取代:
scanf("%s", string);
不仅代码更简洁,而且可以直接输入带空格的字符串。同样,前面章节中,对字符指针变量所指向的内存单元进行初始化也可以用 gets(),下面将那个程序也改一下,将 scanf 换成 gets():
# include <stdio.h>
int main(void){
char str[30];
char *string = str; //一定要先将指针变量初始化
printf("请输入字符串:");
gets(string); //也可以写成
gets(str);
printf("%s\n", string); //输出参数是已经定义好的“指针变量名”
return 0;}
输出结果是:
请输入字符串:Hi i...like you
Hi i...like you
# include <stdio.h>
int main(void){
char str[30];
char ch;
printf("请输入字符串:");
gets(str);
printf("%s\n", str);
scanf("%c", &ch);
printf("ch = %c\n", ch);
return 0;}
输出结果是:
请输入字符串:i love you
i love you
Y
ch = Y
我们看到,没有清空缓冲区照样可以输入'Y',因为 gets() 已经将缓冲区中的回车取出来丢掉了。如果前面使用的不是 gets() 而是 scanf,那么通过键盘给 ch 赋值前就必须先使用 getchar() 清空缓冲区。
微信扫码关注
更新实时通知