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.