Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9264
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 22
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-22 20:36
文章分类
文章存档

2014年(1)

我的朋友

分类: C/C++

2014-10-12 19:14:15

scanf的所填的格式控制是很自由化的:
eg:scanf(“%d%f%c”,&a,&b,&c);
为了%d的int型和%f型做区别,所以按键输入时,要空格隔开输入,但是,浮点型的数和字符要没有间隔:
1 1.2c
eg:如果scanf(“%d,%f,%c”,&a,&b,&c);
输入就要和格式控制一致:
1,1.2,c
eg:scanf(“a=%d,b=%f,d=%c”,&a,&b,&c);
a=1,b=1.2,c=c
还有就是scanf中也可以
eg:scanf(“a=%d,b=%f,d=%c\n”,&a,&b,&c);
这个换行键就是直接enter即可;
因为一个程序作业得到的:

#include
int main(void)
{
 char a[]={0};
 int i,n;
 printf("输入密码长度:\n");
 scanf("%d",&n);
 printf("输入密码:\n");
 for(i=0;i<n+1;i++) //本来应该是for(i=0;i<n;i++) 

  a[i]=getchar(); 

 for(i=1;i<n+1;i++)//本来应该是for(i=0;i<n;i++) 
 {
  a[i]=a[i]+4;
  putchar(a[i]);
 }
 putchar('\n');
}
在输入中我习惯输入完以后就按enter键,但是在这个程序冲在将数字输入后就不能按enter键表示结束,而是应该继续在数字后输入字母(程序中应该输入的密码),不然电脑会自动将enter键的ascll码数作为一个getchar的输入(从而影响密码输入的数组排列)。所以应该改为:

#include
int main(void)
{
 char a[]={0};
 int i,n;
 printf("输入密码长度和输入密码:\n");
 scanf("%d\n",&n);
 for(i=0;i<n;i++)

  a[i]=getchar(); 

 for(i=0;i<n;i++) 
 {
  a[i]=a[i]+4;
  putchar(a[i]);
 }
 putchar('\n');
}
这样即使是习惯将enter键作为scanf的输入,不会影响getchar.

阅读(1221) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

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