简单的文字处理
单个字符的输入输出
字符数据用ASCll码表表示相应的字符在存储上存储的是相应的ASCll码
getchar()函数只能获取一个字符,getchar相当于scanf从键盘中扫描一个字符。
上图中输入ABC,getchar在键盘缓冲区中只存储了一个字符A所以在putchar()中只输出一个a。
多个字符的输入输出
上一节所提到的函数getchar是只存储一个字符,所以利用循环我们可以连续输出多个字符。
while((c=getchar())!='\n')
putchar(c);
当键盘不按下回车是,陆续存储键盘锁按下的按键,在用ascll码表存储字符时,所表示的字符用‘’表示
while((c=getchar())!='#')
putchar(c);
当案件不按下#按键时,陆续存储键盘录入的按键。
统计字符个数
在获取各个字符时,利用count计数。
char c;
int count = 0;
while((c=getchar()!='\n');
count++;
prinrf("\n");
printf("%d",count);
用for循环统计个数
for循环一般适用于有限次数或循环次数明确的循环。
for(i=0;i<n;i++)
int main()
{
char c;
int i;
for(i=0;(c=getchar()!='\n';i++)
{
putchar(c);
}
printf("\n");
printf("%d",i);
}
统计数字字符的个数
因为数字字符的ascll码是连续的,可利用此性质当一个字符满足在数字字符的区间内,计数count自加。
int main()
{
int count=0;//计算字符个数
char c;
while((c=getchar())!='\n')
{
putchar(c);
if(c>='0'&&c<='9') count++;
}
printf("%d\n",count);//输出字符个数
return 0;
}
【项目3:消除多余的空格】
从键盘上的输入一句话,直到按回车键为止,这些字符被原样输出,但若有连续的一个以上的空格时只输出一个空格。
例如,输入:I am a teacher.,输出I am a teacher
解题思路 打印字符不是空格时标记为0,在打印字符空格时如果标记为0则上个字符无空格 则打印该字符.并将标记为1. 1不操作 0打印并标记为1
int main()
{
char c;
int n_space = 0;//0未检测到空格
while((c=getchar())!='\n'))
{
if(c!=' ')
{
n_space = 0;
putchar(c);
}
else if(n_space == 0)
{
putchar(c);
n_space = 1;
}
}
}