回复 3楼 mqhz
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define N 3
int main(int argc, char *argv[])
{
int i;
char c;
printf("请输入%d个字符:\n", N);
for(i=0; i<N; i++)
{
scanf("%c", &c);
printf("输入的是:%c,ASCII:%d\n", c,c);//
if(islower(c))
c-=32;
printf("变化后是:%c,ASCII:%d\n", c,c);
}
printf("\n");
system("PAUSE");
return 0;
}
你输入:a b c回车以后,得到:
输入的是:a,ASCII:97
变化后是:A,ASCII:65
输入的是: ,ASCII:32
变化后是: ,ASCII:32
输入的是:b,ASCII:98
变化后是:B,ASCII:66
造成上述结果的原因是,输入:a b c回车时,' '(空格符)保存在缓冲区内,scanf("%c",&c);第2次读取的是' '(空格符)
解决的办法:
1.输入abc回车
2.一次输入一个字符
3.
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define N 3
int main(int argc, char *argv[])
{
int i;
char c;
printf("请输入%d个字符:\n", N);
for(i=0; i<N; i++)
{
scanf("%c", &c);
fflush(stdin);///////功能:清除一个流
printf("输入的是:%c,ASCII:%d\n", c,c);//
if(islower(c))
c-=32;
printf("变化后是:%c,ASCII:%d\n", c,c);
}
printf("\n");
system("PAUSE");
return 0;
}