如何用%s控制输入句子?急

leimon99 2011-12-15 03:20:03
%S遇到空格就停下来了,如何用它控制输入句子呢?
我觉得是用循环但是不知道怎么用,求指点
...全文
198 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
Moral 2011-12-16
  • 打赏
  • 举报
回复
赵4老师 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zhao4zhong1 的回复:]
你输入Hello World回车试试,注意中间的空格是汉字全角空格。嘿嘿!
[/Quote]
歪打正着!(^_^)
赵4老师 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 didijiji 的回复:]
引用 2 楼 liru125504 的回复:


char str[50] ;
gets(str);
这样就可以接收输入的空格了

同意!
[/Quote]
输入超过50个字符就会出问题!
应改为
char str[50];
fgets(str,50,stdin);
if ('\n'==str[strlen(str)-1]) str[strlen(str)-1]=0;

liveeng 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 leimon99 的回复:]

不是啦,是要用scanf("%s",s)来输入,这样子还是改变了这个输入的方式啊。。
引用 10 楼 zhao4zhong1 的回复:
8楼代码纠正为:

C/C++ code
#include <stdio.h>
char s[11];
void main() {
scanf("%10[^\n]",s);
printf("[%s]\n",s);
}
//输入a b回车
……
[/Quote]
那老师就一2B
yht8708 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zhao4zhong1 的回复:]
比如你要用回车结束可以

C/C++ code
#include <stdio.h>
char s[11];
void main() {
scanf("%10[^\r]\r",s);
printf("[%s]\n",s);
}
//输入a bc dddddddd回车
//输出[a bc ddddd]
[/Quote]


不太懂 能不能给讲一下……
Vincent_Song 2011-12-16
  • 打赏
  • 举报
回复
应该可以指定输入结束符。
didijiji 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 liru125504 的回复:]


char str[50] ;
gets(str);
这样就可以接收输入的空格了
[/Quote]
同意!
Cs1275 2011-12-16
  • 打赏
  • 举报
回复
检测空格,遇到空格就循环输入,换行结束。这样行不行?
[Quote=引用 6 楼 leimon99 的回复:]

如果我自己不知道有几个空格怎么办?
引用 3 楼 wyjxhl97 的回复:
格式化输入
scanf(“%s %s”,&amp;a,&amp;b)

两个%s中间有空格
多个输入以此类推
[/Quote]
赵4老师 2011-12-16
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 leimon99 的回复:]
讲下fgets和
gets

引用 21 楼 zhao4zhong1 的回复:
引用 17 楼 didijiji 的回复:
引用 2 楼 liru125504 的回复:


char str[50] ;
gets(str);
这样就可以接收输入的空格了

同意!

输入超过50个字符就会出问题!
应改为
char str[50];
fgets(str,50,st……
[/Quote]
gets会去掉末尾的'\n'但无法限制输入长度。
fgets不会去掉末尾的'\n'但可以限制输入长度。
leimon99 2011-12-16
  • 打赏
  • 举报
回复
讲下fgets和
gets
[Quote=引用 21 楼 zhao4zhong1 的回复:]
引用 17 楼 didijiji 的回复:
引用 2 楼 liru125504 的回复:


char str[50] ;
gets(str);
这样就可以接收输入的空格了

同意!

输入超过50个字符就会出问题!
应改为
char str[50];
fgets(str,50,stdin);
if ('\n'==str[strlen(str)-1]) str[str……
[/Quote]
leimon99 2011-12-16
  • 打赏
  • 举报
回复
最后是这样子解决的,循环至,最后一个数组的内容为结束符
[Quote=引用 18 楼 songjinshi 的回复:]
应该可以指定输入结束符。
[/Quote]
CoolEgos 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 zhao4zhong1 的回复:]

上帖代码输入a b回车不能结束输入,看来回车结束只能用fgets函数了。
比如
C/C++ code
char s[11];
fgets(s,11,stdin);
if ('\n'==s[stelen(s)-1]) s[stelen(s)-1]=0;


用.结束倒是可以:
C/C++ code
#include <stdio.h>
char s[11];
void main() {……
[/Quote]学习下,但是有两个空格或点怎么??不能写成和 gets();一样的?
qq120848369 2011-12-15
  • 打赏
  • 举报
回复
fgets就可以了.
赵4老师 2011-12-15
  • 打赏
  • 举报
回复
你输入Hello World回车试试,注意中间的空格是汉字全角空格。嘿嘿!
leimon99 2011-12-15
  • 打赏
  • 举报
回复
我都学了,都知道,可是就是老师让用%s来做这个,刁难我。。。

[Quote=引用 7 楼 whc748227431whc 的回复:]
可以定义一个数组比如char a[80],然后用gets语句,gets语句是可以连同空格也一起放进数组里面的。比如
#include <stdio.h>
main()
{char a[80];
printf("请输入一个字符串!\n");
gets(a);
puts(a);
}
就是不知道楼主学到gets和puts没有。
假如没有的话,也可以用个while((ch=getc……
[/Quote]
leimon99 2011-12-15
  • 打赏
  • 举报
回复
不是啦,是要用scanf("%s",s)来输入,这样子还是改变了这个输入的方式啊。。
[Quote=引用 10 楼 zhao4zhong1 的回复:]
8楼代码纠正为:

C/C++ code
#include <stdio.h>
char s[11];
void main() {
scanf("%10[^\n]",s);
printf("[%s]\n",s);
}
//输入a b回车
//输出[a b]

//输入a bbbbbbbbbbbbbbbb回车
//输出[a bbbbbbbb]
[/Quote]
赵4老师 2011-12-15
  • 打赏
  • 举报
回复
8楼代码纠正为:
#include <stdio.h>
char s[11];
void main() {
scanf("%10[^\n]",s);
printf("[%s]\n",s);
}
//输入a b回车
//输出[a b]

//输入a bbbbbbbbbbbbbbbb回车
//输出[a bbbbbbbb]
赵4老师 2011-12-15
  • 打赏
  • 举报
回复
上帖代码输入a b回车不能结束输入,看来回车结束只能用fgets函数了。
比如
char s[11];
fgets(s,11,stdin);
if ('\n'==s[stelen(s)-1]) s[stelen(s)-1]=0;

用.结束倒是可以:
#include <stdio.h>
char s[11];
void main() {
scanf("%10[^.].",s);
printf("[%s]\n",s);
}
//输入a b.回车
//输出[a b]

//输入a bbbbbbbbbbbbbbbb.回车
//输出[a bbbbbbbb]

//输入a bbbbbbbbbbbbbbbbb回车
//输出[a bbbbbbbb]
赵4老师 2011-12-15
  • 打赏
  • 举报
回复
比如你要用回车结束可以
#include <stdio.h>
char s[11];
void main() {
scanf("%10[^\r]\r",s);
printf("[%s]\n",s);
}
//输入a bc dddddddd回车
//输出[a bc ddddd]
whc748227431whc 2011-12-15
  • 打赏
  • 举报
回复
可以定义一个数组比如char a[80],然后用gets语句,gets语句是可以连同空格也一起放进数组里面的。比如
#include <stdio.h>
main()
{char a[80];
printf("请输入一个字符串!\n");
gets(a);
puts(a);
}
就是不知道楼主学到gets和puts没有。
假如没有的话,也可以用个while((ch=getchar())!='\n')来控制。比如
#include <stdio.h>
main()
{char a[80];
char ch;
int i=0; //记录你输入了多少个。
int j; //循环变量
printf("请输入一串字符!\n");
while((ch=getchar())!='\n')
{a[i]=ch;
i++;
};
for(j=0;j<i;j++)
printf("%c",a[j]);
printf("\n");
}
加载更多回复(6)

69,377

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧