- ------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
-
- 1.scanf
- 用scanf貌似接受不了句子,因为遇到空格就停止;
- 但是有一个解决的好方法,可以用%[^\n];%[]是scanf的格式控制符。
- 以下是百度百科的说明:
%[ABC]
用字符 ^ 可以说明补集。把 ^ 字符放为扫描集的第一字符时,构成其它字符组成的命令的补集合,指示 scanf() 只接受未说明的其它字符。对于许多实现来说,用 连字符可以说明一个范围。 例如,以下扫描集使 scanf() 接受字母 A 到 Z: %[A-Z] -
- 2.gets
- gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取。
- 用gets()函数才能输入字符串,且遇到空格不会结束。但是gets函数的缺点是不安全,执行读操作时易发生溢出。
存在潜在的缓冲区溢出问题, gets()已在C99下废弃,在C11下停用,如需读入整个字符串,应使用fgets()。
- 3.fgets
fgets(x, sizeof(x), stdin),
同时可以用作键盘输入:fgets(key,n,stdin)且还必须:key[strlen(key)-1]='\0'
还有种程序经常使用的方法: key[strlen(key-1)]=0x00;
与gets相比使用这个好处是:读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积 导致的缓存溢出问题