黑马程序员技术交流社区

标题: 关于scanf()和gets() [打印本页]

作者: jiangenhao    时间: 2014-4-25 10:16
标题: 关于scanf()和gets()
本帖最后由 jiangenhao 于 2014-4-25 15:22 编辑

int main()
{
    //提示用户输入一句英文句子
    printf("请输入一句英文句子\n");
    //定义一个字符串用来保存用户输入的英文句子
    char *str[100] = {0};
    //接受用户输入的英文句子并存到str数组中去
    scanf("%s",str);
//    //计算句子的长度
  int lenght = strlen(str);
printf("%d",length);

问题 我想用scanf()接收一个英文句子 可是遇到空格它就自动停止了
用gets()就可以实现
如果用scanf()应该如何实现接收一个带有空格的英文句子
作者: 胡铭    时间: 2014-4-25 10:29
貌似只能用gets()
作者: 郑亚鸽    时间: 2014-4-25 11:01
众所周知,scanf遇到空格或回车即停止接收字符串,今天学到一招,可以让scanf接收包含空格的字符串。
#include <iostream>
using namespace std;

int main()
{
char a[20];
scanf("%[^\n]",a);
puts(a);
return 0;
}
这里主要介绍一个参数,%[ ],这个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符,比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是“^”,这说明读取不在“^“后面集合的字符,即遇到”^“后面集合的字符便停止。此时读入的字符串是可以含有空格的。
作者: 葬花桥    时间: 2014-4-25 12:14
上次有个帖子也问到了相关的问题,要输入一个包含空格的字符串,除了用gets(不建议用,它的参数是一个指针),可以用scanf的格式化输入  scanf("%[^\n]",str); 它的意思是在遇到\n符号前不返回,也就是说你输入了空格它也不会返回,也就把空格包含到字符串中了,\n是自定义的一个返回标志,scanf的格式化输入还有很多,楼主可以查找资料!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2