Chinaunix首页 | 论坛 | 博客
  • 博客访问: 276376
  • 博文数量: 28
  • 博客积分: 290
  • 博客等级: 二等列兵
  • 技术积分: 326
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-10 12:12
文章分类

全部博文(28)

文章存档

2020年(1)

2018年(1)

2017年(3)

2015年(7)

2014年(9)

2010年(3)

2006年(4)

我的朋友

分类: C/C++

2010-11-03 21:29:15

 

读/写字符的几种方法

char ch;

scanf("%c", &ch);

printf("%c", ch);

scanf函数的大概工作流程是:挨个地拿缓冲区的字符与格式串的字符进行匹配,对于格式串中的转换说明,匹配成功则读入字符;匹配不成功,则将字符退回缓冲区,函数返回;对于格式串中的普通字符和空白符,匹配成功时把字符丢掉,匹配不成功,则将字符退回缓冲区,函数返回。

scanf()函数通常情况下能够读入所有字符(包括普通字符和空白字符),即在读入字符前不会跳过空白符。如果要读取的字符是空格或换行符,那么scanf函数会把该空格或换行符读入变量ch中。注意,scanf函数在读入数时会自动跳过两个数之间的空白字符。

读入字符时跳过空白字符的方法

在格式串中放置普通字符或空白符,以指明要跳过这些字符。

格式串" %ch“跳过普通字符前所有的空白字符,将碰到的第一个普通字符读入变量c中。

式串"%ch "将碰到的第一个普通字符读入变量c后,跳过该字符后所有的空白字符直至碰到第二个普通字符并将其作为缓冲区的第一个字符,因此在输入时要求输入两个普通字符以结束此次输入。

同理,scanf函数也可以跳过任意指定的普通字符,方法同上。

char ch;

ch = getchar();

putchar(ch);

与scanf函数一样,gechar函数也不会在读取时跳过空白字符。putchar函数和scanf函数的执行速度比printf函数和scanf函数快。

通过在while()循环条件表达式中使用==和!=来寻找与指定字符相同或不相同的数据对象,找到后进行所需要操作,如跳过,计数,读/写,移动,交换等。

相关的,使用<、<=、>、>=来寻找包含和排除的关系。

!=适用于指定字符占少数的情况,使用!=时,对不相同的数据对象的操作是在循环体进行,对相同的数据对象的操作是在循环体之外进行的。

在一行字符中搜寻字符或跳过行剩余部分的方法

while((ch = getchar()) != '\n')

       ;

换行符指定了循环终止的条件,当循环终止时ch存储的是指定查找的字符换行符'\n'。

==适用于指定字符占多数的情况,使用==,对相同的数据对象的操作在循环体内部进行,对不相同的数据对象的操作在循环体之外部进行。

跳过空格或字符的方法:

while((ch = getchar()) == ' ')

        ;

当循环终止时,ch存储碰到的第一个非空格(不同的)字符。

由上可知,只要碰到一个符合要求的字符时循环也随之终止。而我们的本意常常是这样,能够在一次不间断地向前搜寻中多次找到某个字符,而不是在只找到一次的情况下便退出该次搜寻。这个时候就要在循环条件表达式中指定循环终止的条件,而在循环内部引入if()选择结构来处理相同与不相同的数据对象。

阅读(2658) | 评论(1) | 转发(0) |
0

上一篇:字号和行距

下一篇:c语言函数调用

给主人留下些什么吧!~~

chinaunix网友2010-11-05 08:40:59

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com