虽然用gets()时有空格也可以直接输入,但是 gets()函数有一个非常大的缺陷,即他不检查预留存储区是否能够容纳实际输入的数据,这样很不安全。如果输入的字符数目大于数组的长度,就会发生内存越界,所以编程时建议使用fgets();
#include<stdio.h>
char *fgets(char *s, int size, FILE *stream);
fgets()虽然比gets()安全,但是是要付出代价的,有三个参数,他的功能是从一个 stream流中读取 size个字符存储到字符指针变量 s 所指向的内存空间。他返回一个指针,指向字符串中的第一个字符的地址。
#include<stdio.h>
int main(void)
{
char str[20];
printf("请输入一个字符串:");
fgets(str, 7, stdin);
printf("%s\n", str);
return 0;
}
#include<stdio.h>
int main(void)
{
char str[30];
char *string = str;
printf("请输入字符串:");
fgets(string, 29, stdin);
printf("%s\n", string);
return 0;
}