A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jiangenhao 中级黑马   /  2014-4-25 10:16  /  1107 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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()应该如何实现接收一个带有空格的英文句子

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
貌似只能用gets()
回复 使用道具 举报
众所周知,scanf遇到空格或回车即停止接收字符串,今天学到一招,可以让scanf接收包含空格的字符串。
#include <iostream>
using namespace std;

int main()
{
char a[20];
scanf("%[^\n]",a);
puts(a);
return 0;
}
这里主要介绍一个参数,%[ ],这个参数的意义是读入一个字符集合。[ ]是个集合的标志,因此%[ ]特指读入此集合所限定的那些字符,比如%[A-Z]是输入大写字母,一旦遇到不在此集合的字符便停止。如果集合的第一个字符是“^”,这说明读取不在“^“后面集合的字符,即遇到”^“后面集合的字符便停止。此时读入的字符串是可以含有空格的。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
上次有个帖子也问到了相关的问题,要输入一个包含空格的字符串,除了用gets(不建议用,它的参数是一个指针),可以用scanf的格式化输入  scanf("%[^\n]",str); 它的意思是在遇到\n符号前不返回,也就是说你输入了空格它也不会返回,也就把空格包含到字符串中了,\n是自定义的一个返回标志,scanf的格式化输入还有很多,楼主可以查找资料!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马