|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 感觉很神奇,变换一下得到的结果一样,但我想不出其中的原因
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
564
人关注过本帖
标题:
感觉很神奇,变换一下得到的结果一样,但我想不出其中的原因
只看楼主
加入收藏
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
11
楼
收藏
得分:0
scanf()得到的任何字符串,都不会包括空白字符。所谓空白字符,是指空格、'\t'、'\n'等等字符。事实上,调用一次scanf("%s")只读入了"abcdef",留下后面的字符仍在输入缓冲区中待读,如果你再次调用scanf("%s"),它们才被读进来,你试试就知道了。scanf("%s")一次读一个单词,这是这个函数的典型特性,一定要注意。
授人以渔,不授人以鱼。
2012-12-23 18:59
举报帖子
使用道具
赠送鲜花
love云彩
来 自:青藏高原
等 级:
贵宾
威 望:
53
帖 子:3663
专家分:11416
注 册:2012-11-17
第
12
楼
收藏
得分:0
#include<stdio.h>
#include<ctype.h>
int main()
{
char str[100];
int i;
int a=0;
//判断字母函数
printf("输一个字符串:\n");
for(i=0;i<15;i++)
scanf("%c",&str[i]);
for(i=0;i<15;i++)
{
if(isalpha(str[i]))
a+=1;
}
printf("字母有%d个\n",a);
return 0;
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
版主,你再看看这种情况,我将本来的scanf()改为for(i=0;i<15;i++)
scanf("%c",&str[i]);然后将for语句后面的判断条件改为i<15;运行的时候,我就先输入“abc de4f”,然后我一共按了7次enter键,最后还能输出正确的结果哦,这个问题是不是很纠结?这能说明scanf能输入一个空格符号?但我也觉得有点奇怪,为什么要按了那么多次才有结果出来呢?没试过这种情况
思考赐予新生,时间在于定义
2012-12-23 20:42
举报帖子
使用道具
赠送鲜花
love云彩
来 自:青藏高原
等 级:
贵宾
威 望:
53
帖 子:3663
专家分:11416
注 册:2012-11-17
第
13
楼
收藏
得分:0
如果我这样写,scanf("%s",str),这样如果有一个空格符号的话,空格符号后面的字符串肯定不会被列入了,如果我改为for(i=0;i<15;i++) scanf("%c",&str[i])来逐个输入字符的话,就比如输入“abc de4f”,这中间的空格符号应该也被输入字符组里面了吧,但运行的时候,却要按7次才会有结果出来,好郁闷
思考赐予新生,时间在于定义
2012-12-23 20:47
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
14
楼
收藏
得分:0
scanf("%c"),格式符是%c,这种情况下scanf()会把每一个字符都读进来,这是跟%s不同的行为。注意:scanf()是看格式约定符决定自己的行为,这是编这个函数的人的设计,不是C语言自身的——scanf()和printf()之类都不是语言自身的东西。
我前面说了,正确的结果是由isalpha()生成的,你总共输入7个alpha字符和1个空格符共8个字符放在输入缓冲区中,每次调用scanf("%c")函数只读走1个,连续调用了7次,所以被读入的字符依次是'a','b','c',' ','d','e','4'这样7个,isalpha()函数判断出有6个是alpha字符。缓冲区中还有1个'f'和1个'\n'。
授人以渔,不授人以鱼。
2012-12-23 20:52
举报帖子
使用道具
赠送鲜花
TonyDeng
等 级:
贵宾
威 望:
304
帖 子:25859
专家分:48889
注 册:2011-6-22
第
15
楼
收藏
得分:0
本来不用敲那么多次回车的,输入好后,敲一次回车,for()循环自己会连续读15次%c,不知道你怎么弄出来要敲那么多次回车的。
授人以渔,不授人以鱼。
2012-12-23 21:01
举报帖子
使用道具
赠送鲜花
15
2/2页
1
2
快速回复:
感觉很神奇,变换一下得到的结果一样,但我想不出其中的原因
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.016692 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved