C语言程序设计笔记(2017/3/27)
1.5 字符输入/输出
...上一次笔记
1.5.1 文件复制
字符在键盘、屏幕或其他任何地方无论以什么形式表现,它在机器内部都是以位模式存储的。char类型专门用于存储字符型数据,注意,任何整型也可以用于存储字符型数据。
#include<stdio.h>
/*将输入复制到输出;版本1*/
main()
{
int c;
c=getchar();
while(c!=EOF){
putchar(c);
c=getchar();
}
}
C语言中,在没有输入时,getchar函数返回一个特殊值EOF(end of file,文件结束,EOF定义在头文件<stdio.h>中,是一个整型数)。在声明变量c时,必须让它大到足以存放getchar函数返回的任何值,甚至是存储文件结束符EOF,所以这里不把c声明成char类型。
为了使这段程序更加精炼一些,可以改写为:
#include<stdio.h>
/*将输入复制到输出;版本2*/
main()
{
int c;
while((c=getchar())!=EOF){
putchar(c);
}
}
因为在C语言中,类似于c=getchar()之类的赋值操作是一个表达式,且具有一个值,即赋值后左边变量保存的值。
注意:赋值表达式两边的圆括号不能省略,因为不等于号的优先级比赋值运算符的优先级要高。
1.5.2 字符计数
#include<stdio.h>
/*统计输入的字符数;版本1*/
main()
{
long nc;
nc=0;
while((getchar())!=EOF){
++nc;
putchar(“%ld\n”,nc);
}
}
这里引入了一个新的运算符++,其表示执行加1操作,即实现nc=nc+1。与该运算符相应的是自减运算符——。++和——既可以作为前缀运算符(++nc),也可以作为后缀运算符(nc++),但是这两种形式在表达式中具有不同的值。
该程序中使用long类型的变量存储计算值,这是因为long整数一般比int类型的长度要长,使用long类型是为了避免计算变量溢出。当然,使用double类型可以处理更大的数字。转换说明%ld告诉printf函数其对应的参数是long整型。
1.6 数组
首先,我们编写一个程序以统计各个数字、空白符以及所有其他字符出现的次数。
#include <stdio.h>
/*统计各个数字、空白符及其他字符出现的次数*/
main()
{
int c,i,nwhite,nother;
int ndigit[10];
for (i=0;i<10;++i)
ndigit[i]=0;
while((c=getchar())!=EOF)
if(c>='0'&&c<=‘9’)
++ndigit[c-'0'];
else if (c==' '||c== '\n' || c=='\t')
++nwhite;
else
++nother;
printf("digits=");
for(i=0;i<10;i++)
printf("%d",ndigit[i]);
printf(",while space=%d,other=%d\n,nwhite,nother);
}

浙公网安备 33010602011771号