#include<stdio.h>
#define N 12
int main()//以输出一个名字为例
{
char name[N];
printf("请输入一名字(拼音):");
//scanf("%s",name);
//gets(name);
fgets(name,sizeof(name),stdin);/*从标准输入stdin中读取一行长度为sizeof(name)的字符串送到name为首地址的存储区中 */
printf("%s!\n",name);
return 0;
}
运行如下:
由于 fgets(name,sizeof(name),stdin); 语句限制了输入字符串的长度不能超过数组的大小sizeof(name),所以用户输入的多余字符都被丢弃。
特此说明(以Yang Li-wei为例):
1) scanf()表示读入一个字符串,直到遇空白字符(空格、回车键或制表符)为止。例:输入Yang Li-wei,输出只会是yang!,因为yang与Li-wei中间的空格被作为了终止符。
2) gets()以回车键为字符串的终止符。但gets()不限制输入字符串的长度,容易引起缓冲区溢出(会使程序存在安全隐患),所以用 fgets(name,sizeof(name),stdin); 限制输入字符串的长度。